diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 5308a8f3e8..3b6d5fbfdd 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -90,11 +90,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; @@ -125,10 +126,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE), 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); @@ -211,6 +209,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); + } + public void onConfigurationChanged(@Config int configChanges) { mControllers.onConfigurationChanged(configChanges); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java index b3a9f8db7c..21d7411a56 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java @@ -145,7 +145,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 3cdcdf7f89..bec717d8a9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -110,6 +110,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 281dfea492..c8dd003991 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1686,7 +1686,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/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java index b96395052c..b2619701b8 100644 --- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java +++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java @@ -396,7 +396,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 @@ -406,6 +406,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); @@ -418,6 +421,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.