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

Commit f4a1118d authored by Danny Baumann's avatar Danny Baumann
Browse files

Fix pie controls being disabled by launcher gestures.

Some launchers have gestures for expanding/collapsing the status bar
from swipe gestures which call the respective StatusBarService methods
even if the status bar isn't visible due to expanded desktop. Because of
that, the status bar code internally thinks the expansion is carried out
(even if invisible), thus disabling the bottom pie controls in the
process.
Fix that by making PhoneStatusBar aware of it being hidden by expanded
desktop and ignoring the expand call in that case.

Change-Id: If386ca953517d9b5efcb6cb9054f5c5e6a9e0bc4
parent 7bc5b5f6
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -162,6 +162,7 @@ public abstract class BaseStatusBar extends SystemUI implements
            new ArrayList<NavigationBarCallback>();

    // Pie Control
    protected int mExpandedDesktopState;
    protected PieController mPieController;
    protected PieLayout mPieContainer;
    private int mPieTriggerSlots;
@@ -1356,24 +1357,35 @@ public abstract class BaseStatusBar extends SystemUI implements
                    Settings.System.PIE_GRAVITY), false, this);
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.EXPANDED_DESKTOP_STATE), false, this);
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.EXPANDED_DESKTOP_STYLE), false, this);
        }

        @Override
        public void onChange(boolean selfChange) {
            mPieTriggerSlots = Settings.System.getInt(mContext.getContentResolver(),
            ContentResolver resolver = mContext.getContentResolver();

            mPieTriggerSlots = Settings.System.getInt(resolver,
                    Settings.System.PIE_GRAVITY, Position.BOTTOM.FLAG);

            boolean expanded = Settings.System.getInt(resolver,
                    Settings.System.EXPANDED_DESKTOP_STATE, 0) == 1;
            if (expanded) {
                mExpandedDesktopState = Settings.System.getInt(resolver,
                        Settings.System.EXPANDED_DESKTOP_STYLE, 0);
            } else {
                mExpandedDesktopState = 0;
            }

            attachPie();
        }
    }

    private boolean isPieEnabled() {
        boolean expanded = Settings.System.getInt(mContext.getContentResolver(),
                Settings.System.EXPANDED_DESKTOP_STATE, 0) == 1;
        int pie = Settings.System.getInt(mContext.getContentResolver(),
                Settings.System.PIE_CONTROLS, 0);

        return (pie == 1 && expanded) || pie == 2;
        return (pie == 1 && mExpandedDesktopState != 0) || pie == 2;
    }

    private void attachPie() {
+10 −0
Original line number Diff line number Diff line
@@ -1592,6 +1592,11 @@ public class PhoneStatusBar extends BaseStatusBar {
        if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
            return ;
        }
        // don't allow expanding via e.g. service call while status bar is hidden
        // due to expanded desktop
        if (mExpandedDesktopState == 2) {
            return;
        }

        mNotificationPanel.expand();
        if (mHasFlipSettings && mScrollView.getVisibility() != View.VISIBLE) {
@@ -1659,6 +1664,11 @@ public class PhoneStatusBar extends BaseStatusBar {
        if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
            return;
        }
        // don't allow expanding via e.g. service call while status bar is hidden
        // due to expanded desktop
        if (mExpandedDesktopState == 2) {
            return;
        }

        // Settings are not available in setup
        if (!mUserSetup) return;