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
diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java
index af3fdcc..b46d7e2 100644
--- a/src/com/android/launcher3/AppWidgetResizeFrame.java
+++ b/src/com/android/launcher3/AppWidgetResizeFrame.java
@@ -46,6 +46,7 @@
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 @@
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));