From 81feb2c5477b52ecb8976e5b79e5aa2081b0ff82 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Fri, 20 Mar 2020 12:50:04 -0700 Subject: [PATCH] Don't draw bottom scrim in fully gestural mode The scrim exists primarily to protect nav bar buttons which don't exist in this mode. Change-Id: Ic6de7d54f27f135eecb116ac09714c91c05b88da --- .../graphics/WorkspaceAndHotseatScrim.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java b/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java index 3fb2bf6a29..7b7ab5e18b 100644 --- a/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java +++ b/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java @@ -40,12 +40,14 @@ import android.graphics.drawable.Drawable; import android.util.DisplayMetrics; import android.util.FloatProperty; import android.view.View; +import android.view.WindowInsets; import androidx.core.graphics.ColorUtils; import com.android.launcher3.CellLayout; import com.android.launcher3.R; import com.android.launcher3.ResourceUtils; +import com.android.launcher3.Utilities; import com.android.launcher3.Workspace; import com.android.launcher3.uioverrides.WallpaperColorInfo; import com.android.launcher3.util.Themes; @@ -198,9 +200,22 @@ public class WorkspaceAndHotseatScrim extends Scrim { * Determines whether to draw the top and/or bottom scrim based on new insets. */ public void onInsetsChanged(Rect insets, boolean allowSysuiScrims) { - mDrawTopScrim = allowSysuiScrims && mTopScrim != null && insets.top > 0; - mDrawBottomScrim = allowSysuiScrims && mBottomMask != null - && !mLauncher.getDeviceProfile().isVerticalBarLayout(); + mDrawTopScrim = allowSysuiScrims + && mTopScrim != null + && insets.top > 0; + mDrawBottomScrim = allowSysuiScrims + && mBottomMask != null + && !mLauncher.getDeviceProfile().isVerticalBarLayout() + && hasBottomNavButtons(); + } + + private boolean hasBottomNavButtons() { + if (Utilities.ATLEAST_Q && mLauncher.getRootView() != null + && mLauncher.getRootView().getRootWindowInsets() != null) { + WindowInsets windowInsets = mLauncher.getRootView().getRootWindowInsets(); + return windowInsets.getTappableElementInsets().bottom > 0; + } + return true; } @Override