Merge "Ensure that the reorder preview and what gets submited uses the same solution." into tm-qpr-dev am: c3cefebab4 am: 3fad40fe1c
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/20346867 Change-Id: Ic0a7a679baef03bd5dde65390bad52f2cb4786eb Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -2544,21 +2544,21 @@ public class CellLayout extends ViewGroup {
|
||||
if (result == null) {
|
||||
result = new int[]{-1, -1};
|
||||
}
|
||||
ItemConfiguration finalSolution;
|
||||
// When we are checking drop validity or actually dropping, we don't recompute the
|
||||
// direction vector, since we want the solution to match the preview, and it's possible
|
||||
// that the exact position of the item has changed to result in a new reordering outcome.
|
||||
if ((mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL || mode == MODE_ACCEPT_DROP)
|
||||
&& mPreviousSolution != null) {
|
||||
|
||||
ItemConfiguration finalSolution = null;
|
||||
// We want the solution to match the animation of the preview and to match the drop so we
|
||||
// only recalculate in mode MODE_SHOW_REORDER_HINT because that the first one to run in the
|
||||
// reorder cycle.
|
||||
if (mode == MODE_SHOW_REORDER_HINT || mPreviousSolution == null) {
|
||||
finalSolution = calculateReorder(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY,
|
||||
dragView);
|
||||
mPreviousSolution = finalSolution;
|
||||
} else {
|
||||
finalSolution = mPreviousSolution;
|
||||
// We reset this vector after drop
|
||||
if (mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL) {
|
||||
mPreviousSolution = null;
|
||||
}
|
||||
} else {
|
||||
finalSolution = calculateReorder(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY,
|
||||
dragView);
|
||||
mPreviousSolution = finalSolution;
|
||||
}
|
||||
|
||||
if (finalSolution == null || !finalSolution.isSolution) {
|
||||
|
||||
@@ -2384,23 +2384,20 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T>
|
||||
final View child = (mDragInfo == null) ? null : mDragInfo.cell;
|
||||
int reorderX = mTargetCell[0];
|
||||
int reorderY = mTargetCell[1];
|
||||
if (!nearestDropOccupied) {
|
||||
mDragTargetLayout.performReorder((int) mDragViewVisualCenter[0],
|
||||
(int) mDragViewVisualCenter[1], minSpanX, minSpanY, item.spanX, item.spanY,
|
||||
child, mTargetCell, new int[2], CellLayout.MODE_SHOW_REORDER_HINT);
|
||||
mDragTargetLayout.visualizeDropLocation(mTargetCell[0], mTargetCell[1],
|
||||
item.spanX, item.spanY, d);
|
||||
} else if ((mDragMode == DRAG_MODE_NONE || mDragMode == DRAG_MODE_REORDER)
|
||||
&& !mReorderAlarm.alarmPending()
|
||||
if ((mDragMode == DRAG_MODE_NONE || mDragMode == DRAG_MODE_REORDER)
|
||||
&& (mLastReorderX != reorderX || mLastReorderY != reorderY)
|
||||
&& targetCellDistance < mDragTargetLayout.getReorderRadius(mTargetCell, item.spanX,
|
||||
item.spanY)) {
|
||||
|
||||
int[] resultSpan = new int[2];
|
||||
mDragTargetLayout.performReorder((int) mDragViewVisualCenter[0],
|
||||
(int) mDragViewVisualCenter[1], minSpanX, minSpanY, item.spanX, item.spanY,
|
||||
child, mTargetCell, resultSpan, CellLayout.MODE_SHOW_REORDER_HINT);
|
||||
child, mTargetCell, new int[2], CellLayout.MODE_SHOW_REORDER_HINT);
|
||||
}
|
||||
|
||||
if (!nearestDropOccupied) {
|
||||
mDragTargetLayout.visualizeDropLocation(mTargetCell[0], mTargetCell[1],
|
||||
item.spanX, item.spanY, d);
|
||||
} else if ((mDragMode == DRAG_MODE_NONE || mDragMode == DRAG_MODE_REORDER)
|
||||
&& !mReorderAlarm.alarmPending()) {
|
||||
// Otherwise, if we aren't adding to or creating a folder and there's no pending
|
||||
// reorder, then we schedule a reorder
|
||||
ReorderAlarmListener listener = new ReorderAlarmListener(mDragViewVisualCenter,
|
||||
|
||||
Reference in New Issue
Block a user