From 7abb9e9baf0fa7ece6141dd29e7cc53dad0a4ecc Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 26 Sep 2022 21:31:00 +0200 Subject: [PATCH] center the dragged widget horizontally --- .../simplemobiletools/launcher/views/HomeScreenGrid.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt index 01eb148..1d12718 100644 --- a/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt +++ b/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt @@ -291,8 +291,13 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Vie val gridCells = getClosestGridCells(center) if (gridCells != null) { - val rect = Rect(gridCells.first, gridCells.second, gridCells.first + draggedItem!!.widthCells, gridCells.second + draggedItem!!.heightCells) - if (rect.right > COLUMN_COUNT) { + // drag the center of the widget, not the top left corner + val left = gridCells.first - Math.floor((draggedItem!!.widthCells - 1) / 2.0).toInt() + val rect = Rect(left, gridCells.second, left + draggedItem!!.widthCells, gridCells.second + draggedItem!!.heightCells) + if (rect.left < 0) { + rect.right -= rect.left + rect.left = 0 + } else if (rect.right > COLUMN_COUNT) { val diff = rect.right - COLUMN_COUNT rect.right -= diff rect.left -= diff