diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index 3f621fdb34..4b75db4fbe 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -15,6 +15,7 @@ */ package com.android.launcher3.taskbar; +import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X; import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_A11Y; import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_A11Y_LONG_CLICK; import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BACK; @@ -194,6 +195,14 @@ public class NavbarButtonsViewController { flags -> (flags & FLAG_KEYGUARD_VISIBLE) == 0 || (flags & FLAG_ONLY_BACK_FOR_BOUNCER_VISIBLE) != 0 || (flags & FLAG_KEYGUARD_OCCLUDED) != 0)); + // Translate back button to be at end/start of other buttons for keyguard + int navButtonSize = mContext.getResources().getDimensionPixelSize( + R.dimen.taskbar_nav_buttons_size); + mPropertyHolders.add(new StatePropertyHolder( + mBackButton, flags -> (flags & FLAG_ONLY_BACK_FOR_BOUNCER_VISIBLE) != 0 + || (flags & FLAG_KEYGUARD_VISIBLE) != 0, + VIEW_TRANSLATE_X, navButtonSize * (isRtl ? -2 : 2), 0)); + // home and recents buttons View homeButton = addButton(R.drawable.ic_sysbar_home, BUTTON_HOME, navContainer, @@ -235,6 +244,7 @@ public class NavbarButtonsViewController { } mSysuiStateFlags = systemUiStateFlags; + // TODO(b/202218289) we're getting IME as not visible on lockscreen from system updateStateForFlag(FLAG_IME_VISIBLE, isImeVisible); updateStateForFlag(FLAG_SWITCHER_SUPPORTED, isImeSwitcherShowing); updateStateForFlag(FLAG_A11Y_VISIBLE, a11yVisible); @@ -337,6 +347,10 @@ public class NavbarButtonsViewController { return buttonView; } + public void onDestroy() { + mPropertyHolders.clear(); + } + private class RotationButtonImpl implements RotationButton { private final ImageView mButton; diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java index 6144881902..e49c6ae181 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java @@ -89,6 +89,7 @@ public class TaskbarControllers { * Cleans up all controllers. */ public void onDestroy() { + navbarButtonsViewController.onDestroy(); uiController.onDestroy(); rotationButtonController.onDestroy(); taskbarDragLayerController.onDestroy(); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 2e9d8bcd0c..9d88956dcd 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -96,7 +96,10 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen @Override public void onConfigurationChanged(Configuration newConfig) { - if ((mOldConfig.diff(newConfig) & ActivityInfo.CONFIG_ASSETS_PATHS) != 0) { + int configDiff = mOldConfig.diff(newConfig); + int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS + | ActivityInfo.CONFIG_LAYOUT_DIRECTION; + if ((configDiff & configsRequiringRecreate) != 0) { // Color has changed, recreate taskbar to reload background color & icons. recreateTaskbar(); }