From 6e1024e161d1736dd6e6e1d473c146c374b247aa Mon Sep 17 00:00:00 2001 From: Sebastian Franco Date: Fri, 29 Jul 2022 13:46:49 -0700 Subject: [PATCH] Account for span greater than 1 in getReorderRadius Fix: 239963678 Test: Making sure the reorder preview is being drawn when moving a widget Test: atest ReorderWidgets Change-Id: Id32919821ac9177b3428261354d361c52b8f9e2d --- src/com/android/launcher3/CellLayout.java | 10 +++++----- src/com/android/launcher3/Workspace.java | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index 52960a9e8e..9f3e1fa924 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -496,8 +496,8 @@ public class CellLayout extends ViewGroup { // Draw reorder drag target. debugPaint.setColor(Color.RED); - canvas.drawCircle(cellCenter[0], cellCenter[1], getReorderRadius(targetCell), - debugPaint); + canvas.drawCircle(cellCenter[0], cellCenter[1], + getReorderRadius(targetCell, 1, 1), debugPaint); // Draw folder creation drag target. if (canCreateFolder) { @@ -912,18 +912,18 @@ public class CellLayout extends ViewGroup { DeviceProfile grid = mActivity.getDeviceProfile(); float iconVisibleRadius = ICON_VISIBLE_AREA_FACTOR * grid.iconSizePx / 2; // Halfway between reorder radius and icon. - return (getReorderRadius(targetCell) + iconVisibleRadius) / 2; + return (getReorderRadius(targetCell, 1, 1) + iconVisibleRadius) / 2; } /** * Returns the max distance from the center of a cell that will start to reorder on drag over. */ - public float getReorderRadius(int[] targetCell) { + public float getReorderRadius(int[] targetCell, int spanX, int spanY) { int[] centerPoint = mTmpPoint; getWorkspaceCellVisualCenter(targetCell[0], targetCell[1], centerPoint); Rect cellBoundsWithSpacing = mTempRect; - cellToRect(targetCell[0], targetCell[1], 1, 1, cellBoundsWithSpacing); + cellToRect(targetCell[0], targetCell[1], spanX, spanY, cellBoundsWithSpacing); cellBoundsWithSpacing.inset(-mBorderSpace.x / 2, -mBorderSpace.y / 2); if (canCreateFolder(getChildAt(targetCell[0], targetCell[1]))) { diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index e025790ca2..b4b29d702f 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -2426,7 +2426,8 @@ public class Workspace extends PagedView } else if ((mDragMode == DRAG_MODE_NONE || mDragMode == DRAG_MODE_REORDER) && !mReorderAlarm.alarmPending() && (mLastReorderX != reorderX || mLastReorderY != reorderY) - && targetCellDistance < mDragTargetLayout.getReorderRadius(mTargetCell)) { + && targetCellDistance < mDragTargetLayout.getReorderRadius(mTargetCell, item.spanX, + item.spanY)) { int[] resultSpan = new int[2]; mDragTargetLayout.performReorder((int) mDragViewVisualCenter[0],