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

Commit 2cfbb7a3 authored by Danesh M's avatar Danesh M Committed by Danesh M
Browse files

SystemUI : Fix left swipe when dismissing bouncer

- Only show bouncer when requesting dismiss, which will set the states
for us.
- Also remove duplicate states.
- Ensure we disable edge gesture when showKeyguard is called
- Bail out on showKeyguard if already in keyguard.

CYNGNOS-2872

Change-Id: I6be10923de1590b386c270925654669a8f832cfe
parent 234fb3b0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import android.view.animation.AnimationUtils;

import com.android.systemui.cm.UserContentObserver;
import com.android.systemui.qs.tiles.LockscreenToggleTile;
import com.android.systemui.statusbar.StatusBarState;
import cyanogenmod.app.Profile;
import cyanogenmod.app.ProfileManager;

@@ -1297,7 +1298,8 @@ public class KeyguardViewMediator extends SystemUI {
    public void showKeyguard() {
        // This is to prevent left edge from interfering
        // with affordances.
        if (mStatusBar.isAffordanceSwipeInProgress()) {
        if (mStatusBar.isAffordanceSwipeInProgress()
                || mStatusBar.getBarState() == StatusBarState.KEYGUARD) {
            return;
        }

+2 −0
Original line number Diff line number Diff line
@@ -88,6 +88,8 @@ public class KeyguardBouncer {
        if (mRoot.getVisibility() == View.VISIBLE || mShowingSoon) {
            return;
        }
        // ensure external keyguard view does not have focus
        mPhoneStatusBar.unfocusKeyguardExternalView();
        mPhoneStatusBar.getScrimController().forceHideScrims(false);
        // Don't hide bottom area if we are in the middle of a affordance
        // launch transition, since once the animation is finished, NPV
+12 −2
Original line number Diff line number Diff line
@@ -928,6 +928,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        mLiveLockScreenController = new LiveLockScreenController(mContext, this,
                mNotificationPanel);
        mNotificationPanel.setLiveController(mLiveLockScreenController);
        if (mStatusBarWindowManager != null) {
            mStatusBarWindowManager.setLiveLockscreenController(mLiveLockScreenController);
        }

        if (mHeadsUpManager == null) {
            mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow);
@@ -3461,6 +3464,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        mStatusBarWindowManager = new StatusBarWindowManager(mContext, mKeyguardMonitor);
        mStatusBarWindowManager.setShowingMedia(mKeyguardShowingMedia);
        mStatusBarWindowManager.add(mStatusBarWindow, getStatusBarHeight());
        if (mLiveLockScreenController != null) {
            mStatusBarWindowManager.setLiveLockscreenController(mLiveLockScreenController);
        }
    }

    // called by makeStatusbar and also by PhoneStatusBarView
@@ -4348,6 +4354,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        }
        mAssistManager.onLockscreenShown();
        mKeyguardBottomArea.requestFocus();
        try {
            WindowManagerGlobal.getWindowManagerService()
                    .setLiveLockscreenEdgeDetector(false);
        } catch (RemoteException e){
            e.printStackTrace();
        }
        if (mLiveLockScreenController.isShowingLiveLockScreenView()) {
            mLiveLockScreenController.getLiveLockScreenView().onKeyguardShowing(
                    mStatusBarKeyguardViewManager.isScreenTurnedOn());
@@ -4685,8 +4697,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
    public void showBouncer() {
        if (!mRecreating && mNotificationPanel.mCanDismissKeyguard
                && (mState != StatusBarState.SHADE || mLiveLockScreenController.getLiveLockScreenHasFocus())) {
            // ensure external keyguard view does not have focus
            unfocusKeyguardExternalView();
            mWaitingForKeyguardExit = mStatusBarKeyguardViewManager.isShowing();
            mStatusBarKeyguardViewManager.dismiss();
        }
+8 −4
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.graphics.Point;
import android.graphics.PixelFormat;
import android.os.Handler;
import android.os.SystemProperties;
import android.util.Log;
import android.view.Gravity;
import android.view.Display;
import android.view.SurfaceSession;
@@ -37,6 +36,7 @@ import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.LiveLockScreenController;
import cyanogenmod.providers.CMSettings;

import java.io.FileDescriptor;
@@ -70,6 +70,7 @@ public class StatusBarWindowManager implements KeyguardMonitor.Callback {
    private static final int STATUS_BAR_LAYER = 16 * TYPE_LAYER_MULTIPLIER + TYPE_LAYER_OFFSET;

    private final State mCurrentState = new State();
    private LiveLockScreenController mLiveLockScreenController;

    public StatusBarWindowManager(Context context, KeyguardMonitor kgm) {
        mContext = context;
@@ -346,7 +347,7 @@ public class StatusBarWindowManager implements KeyguardMonitor.Callback {
    }

    public void setKeyguardExternalViewFocus(boolean hasFocus) {
        mCurrentState.keyguardExternalViewHasFocus = hasFocus;
        mLiveLockScreenController.onLiveLockScreenFocusChanged(hasFocus);
        // make the keyguard occluded so the external view gets full focus
        setKeyguardOccluded(hasFocus);
    }
@@ -399,7 +400,11 @@ public class StatusBarWindowManager implements KeyguardMonitor.Callback {
    }

    public boolean keyguardExternalViewHasFocus() {
        return mCurrentState.keyguardExternalViewHasFocus;
        return mLiveLockScreenController.getLiveLockScreenHasFocus();
    }

    public void setLiveLockscreenController(LiveLockScreenController liveLockScreenController) {
        mLiveLockScreenController = liveLockScreenController;
    }

    private static class State {
@@ -416,7 +421,6 @@ public class StatusBarWindowManager implements KeyguardMonitor.Callback {
        boolean forceStatusBarVisible;
        boolean forceCollapsed;
        boolean forceDozeBrightness;
        boolean keyguardExternalViewHasFocus;

        /**
         * The {@link BaseStatusBar} state from the status bar.
+0 −1
Original line number Diff line number Diff line
@@ -167,7 +167,6 @@ public class LiveLockScreenController {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        mBar.showKeyguard();
                        mBar.startActivityDismissingKeyguard(intent, false, true, true,
                                null);
                    }