Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 40f94c84 authored by Sebastian Franco's avatar Sebastian Franco
Browse files

Fix issue where bottom scrim appears in homescreen when it shouldn't

The bottom scrim should be shown for the Pixel Launcher, other third
party launchers show it when the 3 bottom navigation is activated.

The existing condition for 3 bottom navigation is no longer valid
because the insets at the bottom can be greather than 0 in other
situations other than 3 bottom navigation.

Test: the scrom should not show at all
Test: It appears in some situations where the taskbar is showing
and the scrim gets updates which not always happens so it's hard to
manually recreate, but there is a test that is flaky because of it
HomeScreenImageTabletTest#comparePixelTablet2023HomeScreen.
Fix: 267614579

Change-Id: Iacaf93011aa3f2f643186560fe34b4b26ce52314
parent fcb6a5fc
Loading
Loading
Loading
Loading
+9 −13
Original line number Diff line number Diff line
@@ -32,11 +32,10 @@ import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
import android.util.FloatProperty;
import android.view.View;
import android.view.WindowInsets;

import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.testing.shared.ResourceUtils;
import com.android.launcher3.util.DynamicResource;
@@ -185,21 +184,18 @@ public class SysUiScrim implements View.OnAttachStateChangeListener {

    /**
     * Determines whether to draw the top and/or bottom scrim based on new insets.
     *
     * In order for the bottom scrim to be drawn this 3 condition should be meet at the same time:
     * the device is in 3 button navigation, the taskbar is not present and the Hotseat is
     * horizontal
     */
    public void onInsetsChanged(Rect insets) {
        DeviceProfile dp = mActivity.getDeviceProfile();
        mDrawTopScrim = mTopScrim != null && insets.top > 0;
        mDrawBottomScrim = mBottomMask != null
                && !mActivity.getDeviceProfile().isVerticalBarLayout()
                && hasBottomNavButtons();
    }

    private boolean hasBottomNavButtons() {
        if (Utilities.ATLEAST_Q && mActivity.getRootView() != null
                && mActivity.getRootView().getRootWindowInsets() != null) {
            WindowInsets windowInsets = mActivity.getRootView().getRootWindowInsets();
            return windowInsets.getTappableElementInsets().bottom > 0;
        }
        return true;
                && !dp.isVerticalBarLayout()
                && !dp.isGestureMode
                && !dp.isTaskbarPresent;
    }

    @Override