Treat SysUI as top application when GlobalActions is shown
This is done in order to reduce jank when showing GlobalActions.
Fixes: 136794922
Test: manual - launch GlobalActions, verify reduced jank
Change-Id: I2fe26dbb2aeb6d0fffd3b488a73370458b111cac
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index dc97754..0e4c155 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -95,6 +95,7 @@
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
import com.android.systemui.plugins.GlobalActionsPanelPlugin;
import com.android.systemui.statusbar.phone.ScrimController;
+import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.phone.UnlockMethodCache;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.util.EmergencyDialerConstants;
@@ -1515,6 +1516,8 @@
private boolean mShowing;
private float mScrimAlpha;
private ResetOrientationData mResetOrientationData;
+ private boolean mHadTopUi;
+ private final StatusBarWindowController mStatusBarWindowController;
ActionsDialog(Context context, MyAdapter adapter,
GlobalActionsPanelPlugin.PanelViewController plugin) {
@@ -1523,6 +1526,7 @@
mAdapter = adapter;
mColorExtractor = Dependency.get(SysuiColorExtractor.class);
mStatusBarService = Dependency.get(IStatusBarService.class);
+ mStatusBarWindowController = Dependency.get(StatusBarWindowController.class);
// Window initialization
Window window = getWindow();
@@ -1698,6 +1702,8 @@
public void show() {
super.show();
mShowing = true;
+ mHadTopUi = mStatusBarWindowController.getForceHasTopUi();
+ mStatusBarWindowController.setForceHasTopUi(true);
mBackgroundDrawable.setAlpha(0);
mGlobalActionsLayout.setTranslationX(mGlobalActionsLayout.getAnimationOffsetX());
mGlobalActionsLayout.setTranslationY(mGlobalActionsLayout.getAnimationOffsetY());
@@ -1730,7 +1736,7 @@
.translationX(mGlobalActionsLayout.getAnimationOffsetX())
.translationY(mGlobalActionsLayout.getAnimationOffsetY())
.setDuration(300)
- .withEndAction(super::dismiss)
+ .withEndAction(this::completeDismiss)
.setInterpolator(new LogAccelerateInterpolator())
.setUpdateListener(animation -> {
int alpha = (int) ((1f - (Float) animation.getAnimatedValue())
@@ -1743,10 +1749,15 @@
}
void dismissImmediately() {
- super.dismiss();
mShowing = false;
dismissPanel();
resetOrientation();
+ completeDismiss();
+ }
+
+ private void completeDismiss() {
+ mStatusBarWindowController.setForceHasTopUi(mHadTopUi);
+ super.dismiss();
}
private void dismissPanel() {