Skip to content

Commit 2cfbb7a

Browse files
committed
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
1 parent 234fb3b commit 2cfbb7a

5 files changed

Lines changed: 25 additions & 8 deletions

File tree

packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262

6363
import com.android.systemui.cm.UserContentObserver;
6464
import com.android.systemui.qs.tiles.LockscreenToggleTile;
65+
import com.android.systemui.statusbar.StatusBarState;
6566
import cyanogenmod.app.Profile;
6667
import cyanogenmod.app.ProfileManager;
6768

@@ -1297,7 +1298,8 @@ public void dismiss() {
12971298
public void showKeyguard() {
12981299
// This is to prevent left edge from interfering
12991300
// with affordances.
1300-
if (mStatusBar.isAffordanceSwipeInProgress()) {
1301+
if (mStatusBar.isAffordanceSwipeInProgress()
1302+
|| mStatusBar.getBarState() == StatusBarState.KEYGUARD) {
13011303
return;
13021304
}
13031305

packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ public void show(boolean resetSecuritySelection) {
8888
if (mRoot.getVisibility() == View.VISIBLE || mShowingSoon) {
8989
return;
9090
}
91+
// ensure external keyguard view does not have focus
92+
mPhoneStatusBar.unfocusKeyguardExternalView();
9193
mPhoneStatusBar.getScrimController().forceHideScrims(false);
9294
// Don't hide bottom area if we are in the middle of a affordance
9395
// launch transition, since once the animation is finished, NPV

packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,9 @@ public boolean onTouch(View v, MotionEvent event) {
928928
mLiveLockScreenController = new LiveLockScreenController(mContext, this,
929929
mNotificationPanel);
930930
mNotificationPanel.setLiveController(mLiveLockScreenController);
931+
if (mStatusBarWindowManager != null) {
932+
mStatusBarWindowManager.setLiveLockscreenController(mLiveLockScreenController);
933+
}
931934

932935
if (mHeadsUpManager == null) {
933936
mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow);
@@ -3461,6 +3464,9 @@ private void addStatusBarWindow() {
34613464
mStatusBarWindowManager = new StatusBarWindowManager(mContext, mKeyguardMonitor);
34623465
mStatusBarWindowManager.setShowingMedia(mKeyguardShowingMedia);
34633466
mStatusBarWindowManager.add(mStatusBarWindow, getStatusBarHeight());
3467+
if (mLiveLockScreenController != null) {
3468+
mStatusBarWindowManager.setLiveLockscreenController(mLiveLockScreenController);
3469+
}
34643470
}
34653471

34663472
// called by makeStatusbar and also by PhoneStatusBarView
@@ -4348,6 +4354,12 @@ public void showKeyguard() {
43484354
}
43494355
mAssistManager.onLockscreenShown();
43504356
mKeyguardBottomArea.requestFocus();
4357+
try {
4358+
WindowManagerGlobal.getWindowManagerService()
4359+
.setLiveLockscreenEdgeDetector(false);
4360+
} catch (RemoteException e){
4361+
e.printStackTrace();
4362+
}
43514363
if (mLiveLockScreenController.isShowingLiveLockScreenView()) {
43524364
mLiveLockScreenController.getLiveLockScreenView().onKeyguardShowing(
43534365
mStatusBarKeyguardViewManager.isScreenTurnedOn());
@@ -4685,8 +4697,6 @@ public boolean onSpacePressed() {
46854697
public void showBouncer() {
46864698
if (!mRecreating && mNotificationPanel.mCanDismissKeyguard
46874699
&& (mState != StatusBarState.SHADE || mLiveLockScreenController.getLiveLockScreenHasFocus())) {
4688-
// ensure external keyguard view does not have focus
4689-
unfocusKeyguardExternalView();
46904700
mWaitingForKeyguardExit = mStatusBarKeyguardViewManager.isShowing();
46914701
mStatusBarKeyguardViewManager.dismiss();
46924702
}

packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import android.graphics.PixelFormat;
2525
import android.os.Handler;
2626
import android.os.SystemProperties;
27-
import android.util.Log;
2827
import android.view.Gravity;
2928
import android.view.Display;
3029
import android.view.SurfaceSession;
@@ -37,6 +36,7 @@
3736
import com.android.systemui.statusbar.BaseStatusBar;
3837
import com.android.systemui.statusbar.StatusBarState;
3938
import com.android.systemui.statusbar.policy.KeyguardMonitor;
39+
import com.android.systemui.statusbar.policy.LiveLockScreenController;
4040
import cyanogenmod.providers.CMSettings;
4141

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

7272
private final State mCurrentState = new State();
73+
private LiveLockScreenController mLiveLockScreenController;
7374

7475
public StatusBarWindowManager(Context context, KeyguardMonitor kgm) {
7576
mContext = context;
@@ -346,7 +347,7 @@ public void setShowingMedia(boolean showingMedia) {
346347
}
347348

348349
public void setKeyguardExternalViewFocus(boolean hasFocus) {
349-
mCurrentState.keyguardExternalViewHasFocus = hasFocus;
350+
mLiveLockScreenController.onLiveLockScreenFocusChanged(hasFocus);
350351
// make the keyguard occluded so the external view gets full focus
351352
setKeyguardOccluded(hasFocus);
352353
}
@@ -399,7 +400,11 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
399400
}
400401

401402
public boolean keyguardExternalViewHasFocus() {
402-
return mCurrentState.keyguardExternalViewHasFocus;
403+
return mLiveLockScreenController.getLiveLockScreenHasFocus();
404+
}
405+
406+
public void setLiveLockscreenController(LiveLockScreenController liveLockScreenController) {
407+
mLiveLockScreenController = liveLockScreenController;
403408
}
404409

405410
private static class State {
@@ -416,7 +421,6 @@ private static class State {
416421
boolean forceStatusBarVisible;
417422
boolean forceCollapsed;
418423
boolean forceDozeBrightness;
419-
boolean keyguardExternalViewHasFocus;
420424

421425
/**
422426
* The {@link BaseStatusBar} state from the status bar.

packages/SystemUI/src/com/android/systemui/statusbar/policy/LiveLockScreenController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ public boolean requestDismissAndStartActivity(final Intent intent) {
167167
mHandler.post(new Runnable() {
168168
@Override
169169
public void run() {
170-
mBar.showKeyguard();
171170
mBar.startActivityDismissingKeyguard(intent, false, true, true,
172171
null);
173172
}

0 commit comments

Comments
 (0)