From 712264a85575ee22532407554d086283e775eb2b Mon Sep 17 00:00:00 2001 From: Willie Koomson Date: Wed, 11 Dec 2024 03:49:57 +0000 Subject: [PATCH] Dismiss resize frame before adding widget with add button This change updates LauncherAccessibilityDelegate so that any open widget resize frame is closed before searching for space on the workspace. While the resize frame is open, its cells are marked unoccupied, so LauncherAccessibilityDelegate may try to place something in that space. Bug: 374228746 Test: follow repro steps in bug Flag: EXEMPT bug fix Change-Id: Ibcd0711fff53182d91e9781a73f00c979c15e189 --- .../accessibility/LauncherAccessibilityDelegate.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java index 68a6e62f36..ba6ed66bf3 100644 --- a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java +++ b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java @@ -24,6 +24,7 @@ import android.view.accessibility.AccessibilityEvent; import androidx.annotation.Nullable; +import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.BubbleTextView; import com.android.launcher3.ButtonDropTarget; import com.android.launcher3.CellLayout; @@ -48,7 +49,6 @@ import com.android.launcher3.model.data.WorkspaceItemFactory; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.popup.ArrowPopup; import com.android.launcher3.popup.PopupContainerWithArrow; -import com.android.launcher3.shortcuts.DeepShortcutTextView; import com.android.launcher3.shortcuts.DeepShortcutView; import com.android.launcher3.touch.ItemLongClickListener; import com.android.launcher3.util.IntArray; @@ -405,6 +405,11 @@ public class LauncherAccessibilityDelegate extends BaseAccessibilityDelegate finishCallback) { + // Dismiss widget resize frame if it is showing. The frame marks its cells as unoccupied + // while it is showing, so findSpaceOnWorkspace may try to use those cells. + AbstractFloatingView.closeOpenViews(mContext, /* animate= */ false, + AbstractFloatingView.TYPE_WIDGET_RESIZE_FRAME); + final int[] coordinates = new int[2]; final int screenId = findSpaceOnWorkspace(item, coordinates); if (screenId == -1) {