Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3cefeba authored by Sebastián Franco's avatar Sebastián Franco Committed by Android (Google) Code Review
Browse files

Merge "Ensure that the reorder preview and what gets submited uses the same...

Merge "Ensure that the reorder preview and what gets submited uses the same solution." into tm-qpr-dev
parents 0994f74f 5d990eed
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -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) {
+8 −11
Original line number Diff line number Diff line
@@ -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,