diff options
author | Tony Wickham <twickham@google.com> | 2016-12-12 22:17:02 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-12-12 22:17:02 +0000 |
commit | 72537e44f6c2d2adebe7009cfd1bfa8850049100 (patch) | |
tree | 71b3fa6ba602c2189550b0b69c87c3ea8b767808 /src/com/android/launcher3/Workspace.java | |
parent | 2a2b1ad8fd59f2ee9af3403ac79402bd68cc16a1 (diff) | |
parent | 5dc7435b3352ab6f5645a2450290ed317bf1b054 (diff) | |
download | android_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.java | 19 |
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(); |