summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/Workspace.java
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2016-12-12 22:17:02 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-12-12 22:17:02 +0000
commit72537e44f6c2d2adebe7009cfd1bfa8850049100 (patch)
tree71b3fa6ba602c2189550b0b69c87c3ea8b767808 /src/com/android/launcher3/Workspace.java
parent2a2b1ad8fd59f2ee9af3403ac79402bd68cc16a1 (diff)
parent5dc7435b3352ab6f5645a2450290ed317bf1b054 (diff)
downloadandroid_packages_apps_Trebuchet-72537e44f6c2d2adebe7009cfd1bfa8850049100.tar.gz
android_packages_apps_Trebuchet-72537e44f6c2d2adebe7009cfd1bfa8850049100.tar.bz2
android_packages_apps_Trebuchet-72537e44f6c2d2adebe7009cfd1bfa8850049100.zip
Merge "Move icon back to original cell if a quick drag would cause reorder." into ub-launcher3-master
Diffstat (limited to 'src/com/android/launcher3/Workspace.java')
-rw-r--r--src/com/android/launcher3/Workspace.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index abd2c6c29..13bea2077 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -2577,10 +2577,19 @@ public class Workspace extends PagedView
&& item.screenId == screenId && item.container == container
&& item.cellX == mTargetCell[0] && item.cellY == mTargetCell[1];
+ // When quickly moving an item, a user may accidentally rearrange their
+ // workspace. So instead we move the icon back safely to its original position.
+ boolean returnToOriginalCellToPreventShuffling = !isFinishedSwitchingState()
+ && !droppedOnOriginalCellDuringTransition && !dropTargetLayout
+ .isRegionVacant(mTargetCell[0], mTargetCell[1], spanX, spanY);
int[] resultSpan = new int[2];
- mTargetCell = dropTargetLayout.performReorder((int) mDragViewVisualCenter[0],
- (int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY, cell,
- mTargetCell, resultSpan, CellLayout.MODE_ON_DROP);
+ if (returnToOriginalCellToPreventShuffling) {
+ mTargetCell[0] = mTargetCell[1] = -1;
+ } else {
+ mTargetCell = dropTargetLayout.performReorder((int) mDragViewVisualCenter[0],
+ (int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY, cell,
+ mTargetCell, resultSpan, CellLayout.MODE_ON_DROP);
+ }
boolean foundCell = mTargetCell[0] >= 0 && mTargetCell[1] >= 0;
@@ -2646,7 +2655,9 @@ public class Workspace extends PagedView
LauncherModel.modifyItemInDatabase(mLauncher, info, container, screenId, lp.cellX,
lp.cellY, item.spanX, item.spanY);
} else {
- onNoCellFound(dropTargetLayout);
+ if (!returnToOriginalCellToPreventShuffling) {
+ onNoCellFound(dropTargetLayout);
+ }
// If we can't find a drop location, we return the item to its original position
CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams();