From abf57760e9f02eb30821ee36e164c9710a9e4da6 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Mon, 30 Jun 2025 11:53:51 +0200 Subject: [PATCH] fix bug in widget resizing logic, see #207 --- .../ui/widgets/manage/WidgetManagerView.kt | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetManagerView.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetManagerView.kt index f49f7da..bb52ca0 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetManagerView.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetManagerView.kt @@ -54,22 +54,36 @@ class WidgetManagerView(widgetPanelId: Int, context: Context, attrs: AttributeSe Rect(rect.left + cdx, rect.top + cdy, rect.right + cdx, rect.bottom + cdy) }), TOP({ _, dy, _, sh, rect -> - val cdy = dy.coerceIn(-rect.top, rect.bottom - rect.top - (2 * sh / GRID_SIZE) + 5) - Rect(rect.left, rect.top + cdy, rect.right, rect.bottom) + val range = (-rect.top)..(rect.bottom - rect.top - (2 * sh / GRID_SIZE) + 5) + if (range.isEmpty()) { + rect + } else { + Rect(rect.left, rect.top + dy.coerceIn(range), rect.right, rect.bottom) + } }), BOTTOM({ _, dy, _, sh, rect -> - val cdy = - dy.coerceIn((2 * sh / GRID_SIZE) + 5 + rect.top - rect.bottom, sh - rect.bottom) - Rect(rect.left, rect.top, rect.right, rect.bottom + cdy) + val range = ((2 * sh / GRID_SIZE) + 5 + rect.top - rect.bottom)..(sh - rect.bottom) + if (range.isEmpty()) { + rect + } else { + Rect(rect.left, rect.top, rect.right, rect.bottom + dy.coerceIn(range)) + } }), LEFT({ dx, _, sw, _, rect -> - val cdx = dx.coerceIn(-rect.left, rect.right - rect.left - (2 * sw / GRID_SIZE) + 5) - Rect(rect.left + cdx, rect.top, rect.right, rect.bottom) + val range = (-rect.left)..(rect.right - rect.left - (2 * sw / GRID_SIZE) + 5) + if (range.isEmpty()) { + rect + } else { + Rect(rect.left + dx.coerceIn(range), rect.top, rect.right, rect.bottom) + } }), RIGHT({ dx, _, sw, _, rect -> - val cdx = - dx.coerceIn((2 * sw / GRID_SIZE) + 5 + rect.left - rect.right, sw - rect.right) - Rect(rect.left, rect.top, rect.right + cdx, rect.bottom) + val range = ((2 * sw / GRID_SIZE) + 5 + rect.left - rect.right)..(sw - rect.right) + if (range.isEmpty()) { + rect + } else { + Rect(rect.left, rect.top, rect.right + dx.coerceIn(range), rect.bottom) + } }), }