diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java index 161c98ec5f..6f36d4521e 100644 --- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java @@ -85,7 +85,7 @@ public abstract class BaseQuickstepLauncher extends Launcher private @Nullable TaskbarController mTaskbarController; private final TaskbarStateHandler mTaskbarStateHandler = new TaskbarStateHandler(this); // Will be updated when dragging from taskbar. - private DragOptions mWorkspaceDragOptions = new DragOptions(); + private @Nullable DragOptions mNextWorkspaceDragOptions = null; @Override protected void onCreate(Bundle savedInstanceState) { @@ -274,11 +274,16 @@ public abstract class BaseQuickstepLauncher extends Launcher @Override public DragOptions getDefaultWorkspaceDragOptions() { - return mWorkspaceDragOptions; + if (mNextWorkspaceDragOptions != null) { + DragOptions options = mNextWorkspaceDragOptions; + mNextWorkspaceDragOptions = null; + return options; + } + return super.getDefaultWorkspaceDragOptions(); } - public void setWorkspaceDragOptions(DragOptions dragOptions) { - mWorkspaceDragOptions = dragOptions; + public void setNextWorkspaceDragOptions(DragOptions dragOptions) { + mNextWorkspaceDragOptions = dragOptions; } @Override diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragListener.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragListener.java index 2bd58617f0..9d203fbe76 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragListener.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragListener.java @@ -37,7 +37,6 @@ public class TaskbarDragListener implements View.OnDragListener { private final BaseQuickstepLauncher mLauncher; private final ItemInfo mDraggedItem; - private final DragOptions mDragOptions; // Randomly generated id used to verify the drag event. private final String mId; @@ -51,8 +50,6 @@ public class TaskbarDragListener implements View.OnDragListener { public TaskbarDragListener(BaseQuickstepLauncher launcher, ItemInfo draggedItem) { mLauncher = launcher; mDraggedItem = draggedItem; - mDragOptions = new DragOptions(); - mDragOptions.simulatedDndStartPoint = new Point(); mId = UUID.randomUUID().toString(); } @@ -63,7 +60,7 @@ public class TaskbarDragListener implements View.OnDragListener { private void cleanup() { mDragLayer.setOnDragListener(null); - mLauncher.setWorkspaceDragOptions(new DragOptions()); + mLauncher.setNextWorkspaceDragOptions(null); } /** @@ -88,8 +85,10 @@ public class TaskbarDragListener implements View.OnDragListener { cleanup(); return false; } - mDragOptions.simulatedDndStartPoint.set((int) dragEvent.getX(), (int) dragEvent.getY()); - mLauncher.setWorkspaceDragOptions(mDragOptions); + DragOptions dragOptions = new DragOptions(); + dragOptions.simulatedDndStartPoint = new Point((int) dragEvent.getX(), + (int) dragEvent.getY()); + mLauncher.setNextWorkspaceDragOptions(dragOptions); hotseatView.performLongClick(); } else if (dragEvent.getAction() == DragEvent.ACTION_DRAG_ENDED) { cleanup();