From 9f2a4fe816c35abebba0a818ba1a31fed8b75f43 Mon Sep 17 00:00:00 2001 From: Shamali P Date: Wed, 10 Apr 2024 13:37:59 +0000 Subject: [PATCH] Fix issue that widgets with config activity jump This also linked to the overlap we were seeing in bug 331816144 (as can be seen in before and after video) Bug: N/A Test: See videos Flag: aconfig launcher.enable_add_app_widget_via_config_activity_v2 NEXTFOOD Change-Id: I21717e0c4d4eab7efa1746e46d3218b8b3cee4ef --- src/com/android/launcher3/AppWidgetResizeFrame.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java index af3fdcc69a..b46d7e262e 100644 --- a/src/com/android/launcher3/AppWidgetResizeFrame.java +++ b/src/com/android/launcher3/AppWidgetResizeFrame.java @@ -46,6 +46,7 @@ import com.android.launcher3.util.PendingRequestArgs; import com.android.launcher3.views.ArrowTipView; import com.android.launcher3.widget.LauncherAppWidgetHostView; import com.android.launcher3.widget.LauncherAppWidgetProviderInfo; +import com.android.launcher3.widget.PendingAppWidgetHostView; import com.android.launcher3.widget.util.WidgetSizes; import java.util.ArrayList; @@ -474,8 +475,11 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O mLastDirectionVector[1] = mDirectionVector[1]; } - if (mCellLayout.createAreaForResize(cellX, cellY, spanX, spanY, mWidgetView, - mDirectionVector, onDismiss)) { + // We don't want to evaluate resize if a widget was pending config activity and was already + // occupying a space on the screen. This otherwise will cause reorder algorithm evaluate a + // different location for the widget and cause a jump. + if (!(mWidgetView instanceof PendingAppWidgetHostView) && mCellLayout.createAreaForResize( + cellX, cellY, spanX, spanY, mWidgetView, mDirectionVector, onDismiss)) { if (mStateAnnouncer != null && (lp.cellHSpan != spanX || lp.cellVSpan != spanY) ) { mStateAnnouncer.announce( mLauncher.getString(R.string.widget_resized, spanX, spanY));