Remove opaque-on-interaction from nav bar.
And decouple it from the status bar opaque-on-interaction logic. It's still important to track nav bar interaction for hideybar suspension purposes. Also fix a sysui NPE that can occur when restarting SystemUI (vs the shell). Bug:10606136 Change-Id: I66a15e02cff352e26b25aebc1c42fb58c042effa
This commit is contained in:
@@ -1097,7 +1097,7 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
return km.inKeyguardRestrictedInputMode();
|
||||
}
|
||||
|
||||
public void setInteracting(boolean interacting) {
|
||||
public void setInteracting(int barWindow, boolean interacting) {
|
||||
// hook for subclasses
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.statusbar;
|
||||
|
||||
import android.app.StatusBarManager;
|
||||
import android.graphics.RectF;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
@@ -86,9 +87,9 @@ public class DelegateViewHelper {
|
||||
}
|
||||
|
||||
if (action == MotionEvent.ACTION_DOWN) {
|
||||
mBar.setInteracting(true);
|
||||
mBar.setInteracting(StatusBarManager.WINDOW_NAVIGATION_BAR, true);
|
||||
} else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
|
||||
mBar.setInteracting(false);
|
||||
mBar.setInteracting(StatusBarManager.WINDOW_NAVIGATION_BAR, false);
|
||||
}
|
||||
|
||||
mDelegateView.getLocationOnScreen(mTempPoint);
|
||||
|
||||
@@ -306,7 +306,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
|
||||
}
|
||||
};
|
||||
|
||||
private boolean mInteracting;
|
||||
private int mInteractingWindows;
|
||||
private boolean mAutohideSuspended;
|
||||
private int mStatusBarMode;
|
||||
private int mNavigationBarMode;
|
||||
@@ -1378,7 +1378,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
|
||||
|
||||
visibilityChanged(true);
|
||||
|
||||
setInteracting(true);
|
||||
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, true);
|
||||
}
|
||||
|
||||
public void animateCollapsePanels() {
|
||||
@@ -1662,7 +1662,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
|
||||
mPostCollapseCleanup = null;
|
||||
}
|
||||
|
||||
setInteracting(false);
|
||||
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1738,7 +1738,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
|
||||
}
|
||||
|
||||
if (mStatusBarWindowState == WINDOW_STATE_SHOWING) {
|
||||
setInteracting(true);
|
||||
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1871,7 +1871,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
|
||||
|
||||
private void checkBarModes() {
|
||||
if (mDemoMode) return;
|
||||
checkBarMode(mStatusBarMode, mStatusBarWindowState, mStatusBarView.getBarTransitions());
|
||||
checkBarMode((mInteractingWindows & StatusBarManager.WINDOW_STATUS_BAR) != 0 ? MODE_OPAQUE
|
||||
: mStatusBarMode, mStatusBarWindowState, mStatusBarView.getBarTransitions());
|
||||
if (mNavigationBarView != null) {
|
||||
checkBarMode(mNavigationBarMode,
|
||||
mNavigationBarWindowState, mNavigationBarView.getBarTransitions());
|
||||
@@ -1880,7 +1881,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
|
||||
|
||||
private void checkBarMode(int mode, int windowState, BarTransitions transitions) {
|
||||
final boolean imeVisible = (mNavigationIconHints & NAVIGATION_HINT_BACK_ALT) != 0;
|
||||
final int finalMode = imeVisible || mInteracting ? MODE_OPAQUE : mode;
|
||||
final int finalMode = imeVisible ? MODE_OPAQUE : mode;
|
||||
final boolean animate = windowState == WINDOW_STATE_SHOWING;
|
||||
transitions.transitionTo(finalMode, animate);
|
||||
}
|
||||
@@ -1892,9 +1893,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
|
||||
}};
|
||||
|
||||
@Override
|
||||
public void setInteracting(boolean interacting) {
|
||||
mInteracting = interacting;
|
||||
if (mInteracting) {
|
||||
public void setInteracting(int barWindow, boolean interacting) {
|
||||
mInteractingWindows = interacting
|
||||
? (mInteractingWindows | barWindow)
|
||||
: (mInteractingWindows & ~barWindow);
|
||||
if (mInteractingWindows != 0) {
|
||||
suspendAutohide();
|
||||
} else {
|
||||
resumeSuspendedAutohide();
|
||||
@@ -2117,7 +2120,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
|
||||
+ " scroll " + mScrollView.getScrollX() + "," + mScrollView.getScrollY());
|
||||
}
|
||||
|
||||
pw.print(" mInteracting="); pw.println(mInteracting);
|
||||
pw.print(" mInteractingWindows="); pw.println(mInteractingWindows);
|
||||
pw.print(" mStatusBarWindowState=");
|
||||
pw.println(windowStateToString(mStatusBarWindowState));
|
||||
pw.print(" mStatusBarMode=");
|
||||
|
||||
@@ -95,6 +95,7 @@ public class PhoneStatusBarView extends PanelBar {
|
||||
}
|
||||
|
||||
private void applyMode(int mode, boolean animate) {
|
||||
if (mLeftSide == null || mRightSide == null) return;
|
||||
float newAlpha = getAlphaFor(mode);
|
||||
if (animate) {
|
||||
ObjectAnimator lhs = animateTransitionTo(mLeftSide, newAlpha);
|
||||
|
||||
@@ -5055,7 +5055,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
if (statusBarHasFocus) {
|
||||
int flags = View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE;
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE
|
||||
| View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS
|
||||
| View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION;
|
||||
vis = (vis & ~flags) | (mLastSystemUiFlags & flags);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user