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

Commit 41642bc7 authored by Justin Weir's avatar Justin Weir
Browse files

New logic for calculating qsVisible

This logic has been wrong for a long, long time, and it has remained
this way mostly out of caution. Now that we have shifted to flag
based development, we can put this change into the codebase safely
and find out whether it improves matters or breaks things.

Bug: 412476562
Flag: com.android.systemui.shade_qsvisible_logic
Test: ran affected tests; manually verified
Change-Id: I6abb5b4a793ed77d5b4d6bb59bc77da1f7807ad5
parent 8f2f30e7
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1566,6 +1566,16 @@ flag {
  }
}

flag {
  name: "shade_qsvisible_logic"
  namespace: "systemui"
  description: "Changes the way that QS visibility is calculated"
  bug: "412476562"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
    name: "keyboard_shortcut_helper_shortcut_customizer"
    namespace: "systemui"
+9 −3
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package com.android.systemui.shade;
import static android.view.WindowInsets.Type.ime;

import static com.android.systemui.Flags.qsComposeFragmentEarlyExpansion;
import static com.android.systemui.Flags.shadeQsvisibleLogic;
import static com.android.systemui.classifier.Classifier.QS_COLLAPSE;
import static com.android.systemui.shade.NotificationPanelViewController.COUNTER_PANEL_OPEN_QS;
import static com.android.systemui.shade.NotificationPanelViewController.FLING_COLLAPSE;
@@ -1196,13 +1197,18 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum
    void setClippingBounds() {
        float qsExpansionFraction = computeExpansionFraction();
        final int qsPanelBottomY = calculateBottomPosition(qsExpansionFraction);
        int top = calculateTopClippingBound(qsPanelBottomY);
        // Split shade has no QQS
        final boolean qqsVisible =
                !mSplitShadeEnabled && qsExpansionFraction == 0 && qsPanelBottomY > 0;
        final boolean qqsVisible;
        if (shadeQsvisibleLogic()) {
            qqsVisible = !mSplitShadeEnabled && qsExpansionFraction == 0 && top > 0;
        } else {
            qqsVisible = !mSplitShadeEnabled && qsExpansionFraction == 0 && qsPanelBottomY > 0;
        }

        final boolean qsVisible = qsExpansionFraction > 0;
        final boolean qsOrQqsVisible = qqsVisible || qsVisible;

        int top = calculateTopClippingBound(qsPanelBottomY);
        int bottom = calculateBottomClippingBound(top);
        int left = calculateLeftClippingBound();
        int right = calculateRightClippingBound();