diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 88a29df5d6..ec685b68df 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -98,11 +98,12 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ private static final String WINDOW_TITLE = "Taskbar"; - private final DeviceProfile mDeviceProfile; private final LayoutInflater mLayoutInflater; private final TaskbarDragLayer mDragLayer; private final TaskbarControllers mControllers; + private DeviceProfile mDeviceProfile; + private final WindowManager mWindowManager; private final @Nullable RoundedCorner mLeftCorner, mRightCorner; private final int mTaskbarHeightForIme; @@ -138,10 +139,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ Settings.Secure.getUriFor(Settings.Secure.NAV_BAR_KIDS_MODE), 0); final Resources resources = getResources(); - float taskbarIconSize = resources.getDimension(R.dimen.taskbar_icon_size); - mDeviceProfile.updateIconSize(1, resources); - float iconScale = taskbarIconSize / mDeviceProfile.iconSizePx; - mDeviceProfile.updateIconSize(iconScale, resources); + updateIconSize(resources); mTaskbarHeightForIme = resources.getDimensionPixelSize(R.dimen.taskbar_ime_size); @@ -216,6 +214,19 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mWindowManager.addView(mDragLayer, mWindowLayoutParams); } + /** Updates the Device profile instance to the latest representation of the screen. */ + public void updateDeviceProfile(DeviceProfile dp) { + mDeviceProfile = dp; + updateIconSize(getResources()); + } + + private void updateIconSize(Resources resources) { + float taskbarIconSize = resources.getDimension(R.dimen.taskbar_icon_size); + mDeviceProfile.updateIconSize(1, resources); + float iconScale = taskbarIconSize / mDeviceProfile.iconSizePx; + mDeviceProfile.updateIconSize(iconScale, resources); + } + /** Creates LayoutParams for adding a view directly to WindowManager as a new window */ public WindowManager.LayoutParams createDefaultWindowLayoutParams() { WindowManager.LayoutParams windowLayoutParams = new WindowManager.LayoutParams( diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java index a698279635..3323104511 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java @@ -171,7 +171,7 @@ public class TaskbarDragController extends DragController popupContainer = mControllers.taskbarPopupController.showForIcon(btv); if (popupContainer != null) { - dragOptions.preDragCondition = popupContainer.createPreDragCondition(); + dragOptions.preDragCondition = popupContainer.createPreDragCondition(false); } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 83ae98a5e4..50be430d93 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -118,6 +118,13 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen } else { // Config change might be handled without re-creating the taskbar if (mTaskbarActivityContext != null) { + DeviceProfile dp = mUserUnlocked + ? LauncherAppState.getIDP(mContext).getDeviceProfile(mContext) + : null; + + if (dp != null && dp.isTaskbarPresent) { + mTaskbarActivityContext.updateDeviceProfile(dp.copy(mContext)); + } mTaskbarActivityContext.onConfigurationChanged(configDiff); } } diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index b3ff38fff1..16fecde6fd 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1698,7 +1698,7 @@ public class Workspace extends PagedView PopupContainerWithArrow popupContainer = PopupContainerWithArrow .showForIcon((BubbleTextView) child); if (popupContainer != null) { - dragOptions.preDragCondition = popupContainer.createPreDragCondition(); + dragOptions.preDragCondition = popupContainer.createPreDragCondition(true); } } diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 480385b31f..a0ab56b5e4 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -200,7 +200,7 @@ public final class FeatureFlags { "Enables showing taskbar education the first time an app is opened."); public static final BooleanFlag ENABLE_TASKBAR_POPUP_MENU = getDebugFlag( - "ENABLE_TASKBAR_POPUP_MENU", false, "Enables long pressing taskbar icons to show the" + "ENABLE_TASKBAR_POPUP_MENU", true, "Enables long pressing taskbar icons to show the" + " popup menu."); public static final BooleanFlag ENABLE_OVERVIEW_GRID = getDebugFlag( diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java index 00977059a5..198397a5e1 100644 --- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java +++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java @@ -418,7 +418,7 @@ public class PopupContainerWithArrow * Current behavior: * - Start the drag if the touch passes a certain distance from the original touch down. */ - public DragOptions.PreDragCondition createPreDragCondition() { + public DragOptions.PreDragCondition createPreDragCondition(boolean updateIconUi) { return new DragOptions.PreDragCondition() { @Override @@ -428,6 +428,9 @@ public class PopupContainerWithArrow @Override public void onPreDragStart(DropTarget.DragObject dragObject) { + if (!updateIconUi) { + return; + } if (mIsAboveIcon) { // Hide only the icon, keep the text visible. mOriginalIcon.setIconVisible(false); @@ -440,6 +443,9 @@ public class PopupContainerWithArrow @Override public void onPreDragEnd(DropTarget.DragObject dragObject, boolean dragStarted) { + if (!updateIconUi) { + return; + } mOriginalIcon.setIconVisible(true); if (dragStarted) { // Make sure we keep the original icon hidden while it is being dragged.