Merge "Add dismissImmediate to ListPopupWindow to prevent window leaks in GlobalActionsDialog." into rvc-dev am: 82e9872732
Change-Id: Ia53cce9a5e50e3aad9467e20aacfd4622c4cd5d9
This commit is contained in:
@@ -745,6 +745,15 @@ public class ListPopupWindow implements ShowableListMenu {
|
||||
mHandler.removeCallbacks(mResizePopupRunnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove existing exit transition from PopupWindow and force immediate dismissal.
|
||||
* @hide
|
||||
*/
|
||||
public void dismissImmediate() {
|
||||
mPopup.setExitTransition(null);
|
||||
dismiss();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a listener to receive a callback when the popup is dismissed.
|
||||
*
|
||||
|
||||
@@ -536,7 +536,7 @@ class ControlsUiControllerImpl @Inject constructor (
|
||||
override fun hide() {
|
||||
Log.d(ControlsUiController.TAG, "hide()")
|
||||
hidden = true
|
||||
popup?.dismiss()
|
||||
popup?.dismissImmediate()
|
||||
activeDialog?.dismiss()
|
||||
ControlActionCoordinator.closeDialog()
|
||||
|
||||
|
||||
@@ -484,8 +484,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
||||
*/
|
||||
@VisibleForTesting
|
||||
protected int getMaxShownPowerItems() {
|
||||
// TODO: Overflow disabled on keyguard while we solve for touch blocking issues.
|
||||
if (shouldUseControlsLayout() && !mKeyguardShowing) {
|
||||
if (shouldUseControlsLayout()) {
|
||||
return mResources.getInteger(com.android.systemui.R.integer.power_menu_max_columns);
|
||||
} else {
|
||||
return Integer.MAX_VALUE;
|
||||
@@ -2246,7 +2245,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
||||
mShowing = false;
|
||||
resetOrientation();
|
||||
dismissPanel();
|
||||
dismissOverflow();
|
||||
dismissOverflow(true);
|
||||
if (mControlsUiController != null) mControlsUiController.hide();
|
||||
mNotificationShadeWindowController.setForceHasTopUi(mHadTopUi);
|
||||
mDepthController.updateGlobalDialogVisibility(0, null /* view */);
|
||||
@@ -2259,9 +2258,13 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
||||
}
|
||||
}
|
||||
|
||||
private void dismissOverflow() {
|
||||
private void dismissOverflow(boolean immediate) {
|
||||
if (mOverflowPopup != null) {
|
||||
mOverflowPopup.dismiss();
|
||||
if (immediate) {
|
||||
mOverflowPopup.dismissImmediate();
|
||||
} else {
|
||||
mOverflowPopup.dismiss();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user