Fixing the possibility of opening multiple WidgetsFullSheet

The error is that you can open multiple times the view for
selecting widgets for the Home Screen (i.e. WidgetsFullSheet.java)
but only when using a keyboard by using the command ctrl+w
creating a new instance every time you use it. To fix this
I added a singleton pattern so that only one instance of
WidgetsFullSheet.java can be open at any given point.

Test: Manually Tested
Fix: 196704061
Change-Id: I7a364ee5e746e77455da326a21aff6830ac18e8c
This commit is contained in:
Sebastian Franco
2021-10-25 15:19:38 -05:00
parent d238074c39
commit 97503ab4fb
@@ -40,6 +40,7 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.core.content.ContextCompat;
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.R;
@@ -220,6 +221,11 @@ public class OptionsPopupView extends ArrowPopup<Launcher>
Toast.makeText(launcher, R.string.safemode_widget_error, Toast.LENGTH_SHORT).show();
return null;
} else {
AbstractFloatingView floatingView = AbstractFloatingView.getTopOpenViewWithType(
launcher, TYPE_WIDGETS_FULL_SHEET);
if (floatingView != null) {
return (WidgetsFullSheet) floatingView;
}
return WidgetsFullSheet.show(launcher, true /* animated */);
}
}
@@ -279,7 +285,7 @@ public class OptionsPopupView extends ArrowPopup<Launcher>
public final OnLongClickListener clickListener;
public OptionItem(Context context, int labelRes, int iconRes, EventEnum eventId,
OnLongClickListener clickListener) {
OnLongClickListener clickListener) {
this.labelRes = labelRes;
this.label = context.getText(labelRes);
this.icon = ContextCompat.getDrawable(context, iconRes);
@@ -288,7 +294,7 @@ public class OptionsPopupView extends ArrowPopup<Launcher>
}
public OptionItem(CharSequence label, Drawable icon, EventEnum eventId,
OnLongClickListener clickListener) {
OnLongClickListener clickListener) {
this.labelRes = 0;
this.label = label;
this.icon = icon;