[automerge] Don't recreate taskbar on rotation 2p: 3b7a391c2b
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/17384265 Bug: 219981733 Change-Id: Ic70d6ad697dd5182579f7409999f7f74233a4345
This commit is contained in:
@@ -19,10 +19,7 @@ import static android.content.pm.PackageManager.FEATURE_PC;
|
|||||||
import static android.view.Display.DEFAULT_DISPLAY;
|
import static android.view.Display.DEFAULT_DISPLAY;
|
||||||
import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
|
import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
|
||||||
|
|
||||||
import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN;
|
|
||||||
import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY;
|
|
||||||
import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
|
import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
|
||||||
import static com.android.launcher3.util.DisplayController.CHANGE_SUPPORTED_BOUNDS;
|
|
||||||
|
|
||||||
import android.content.ComponentCallbacks;
|
import android.content.ComponentCallbacks;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -120,19 +117,24 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
|
|||||||
int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS
|
int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS
|
||||||
| ActivityInfo.CONFIG_LAYOUT_DIRECTION | ActivityInfo.CONFIG_UI_MODE
|
| ActivityInfo.CONFIG_LAYOUT_DIRECTION | ActivityInfo.CONFIG_UI_MODE
|
||||||
| ActivityInfo.CONFIG_DENSITY | ActivityInfo.CONFIG_SCREEN_SIZE;
|
| ActivityInfo.CONFIG_DENSITY | ActivityInfo.CONFIG_SCREEN_SIZE;
|
||||||
if ((configDiff & configsRequiringRecreate) != 0) {
|
boolean requiresRecreate = (configDiff & configsRequiringRecreate) != 0;
|
||||||
if ((configDiff & ActivityInfo.CONFIG_SCREEN_SIZE) != 0 &&
|
if ((configDiff & ActivityInfo.CONFIG_SCREEN_SIZE) != 0
|
||||||
mTaskbarActivityContext != null && dp != null) {
|
&& mTaskbarActivityContext != null && dp != null) {
|
||||||
DeviceProfile oldDp = mTaskbarActivityContext.getDeviceProfile();
|
// Additional check since this callback gets fired multiple times w/o
|
||||||
// Additional check since this callback gets fired multiple times w/o
|
// screen size changing, or when simply rotating the device.
|
||||||
// screen size changing
|
DeviceProfile oldDp = mTaskbarActivityContext.getDeviceProfile();
|
||||||
if (dp.widthPx != oldDp.widthPx || dp.heightPx != oldDp.heightPx) {
|
boolean isOrientationChange =
|
||||||
recreateTaskbar();
|
(configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0;
|
||||||
}
|
int oldWidth = isOrientationChange ? oldDp.heightPx : oldDp.widthPx;
|
||||||
} else {
|
int oldHeight = isOrientationChange ? oldDp.widthPx : oldDp.heightPx;
|
||||||
// Color has changed, recreate taskbar to reload background color & icons.
|
if (dp.widthPx == oldWidth && dp.heightPx == oldHeight) {
|
||||||
recreateTaskbar();
|
configDiff &= ~ActivityInfo.CONFIG_SCREEN_SIZE;
|
||||||
|
requiresRecreate = (configDiff & configsRequiringRecreate) != 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requiresRecreate) {
|
||||||
|
recreateTaskbar();
|
||||||
} else {
|
} else {
|
||||||
// Config change might be handled without re-creating the taskbar
|
// Config change might be handled without re-creating the taskbar
|
||||||
if (mTaskbarActivityContext != null) {
|
if (mTaskbarActivityContext != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user