Remove widgets that no longer fit the workspace in their current spans.
This can happen when display size changes. We compare span sizes of widget in the db to the min sizes of the widget in the current display size. If the widget can no longer fit in its existing spans, we remove it. Also update test widgets to have minWidth/minHeight of 1dp. This ensures that the spanX, spanY, min* values remain consistent between different test devices. Bug: 168818961 Change-Id: I723372e4582658f78b2f23ced9073cb77977a6b8
This commit is contained in:
parent
24c81ad7b5
commit
1d7ed30dba
|
@ -49,6 +49,7 @@ import android.util.LongSparseArray;
|
|||
import android.util.TimingLogger;
|
||||
|
||||
import com.android.launcher3.LauncherAppState;
|
||||
import com.android.launcher3.LauncherAppWidgetProviderInfo;
|
||||
import com.android.launcher3.LauncherModel;
|
||||
import com.android.launcher3.LauncherSettings;
|
||||
import com.android.launcher3.Utilities;
|
||||
|
@ -306,6 +307,7 @@ public class LoaderTask implements Runnable {
|
|||
final PackageManagerHelper pmHelper = new PackageManagerHelper(context);
|
||||
final boolean isSafeMode = pmHelper.isSafeMode();
|
||||
final boolean isSdCardReady = Utilities.isBootCompleted();
|
||||
final WidgetManagerHelper widgetHelper = new WidgetManagerHelper(context);
|
||||
|
||||
boolean clearDb = false;
|
||||
try {
|
||||
|
@ -391,6 +393,7 @@ public class LoaderTask implements Runnable {
|
|||
|
||||
WorkspaceItemInfo info;
|
||||
LauncherAppWidgetInfo appWidgetInfo;
|
||||
LauncherAppWidgetProviderInfo widgetProviderInfo;
|
||||
Intent intent;
|
||||
String targetPkg;
|
||||
|
||||
|
@ -720,6 +723,19 @@ public class LoaderTask implements Runnable {
|
|||
+ appWidgetInfo.spanX + "x" + appWidgetInfo.spanY);
|
||||
continue;
|
||||
}
|
||||
widgetProviderInfo =
|
||||
widgetHelper.getLauncherAppWidgetInfo(appWidgetId);
|
||||
if (widgetProviderInfo != null
|
||||
&& (appWidgetInfo.spanX < widgetProviderInfo.minSpanX
|
||||
|| appWidgetInfo.spanY < widgetProviderInfo.minSpanY)) {
|
||||
// This can happen when display size changes.
|
||||
c.markDeleted("Widget removed, min sizes not met: "
|
||||
+ "span=" + appWidgetInfo.spanX + "x"
|
||||
+ appWidgetInfo.spanY + " minSpan="
|
||||
+ widgetProviderInfo.minSpanX + "x"
|
||||
+ widgetProviderInfo.minSpanY);
|
||||
continue;
|
||||
}
|
||||
if (!c.isOnWorkspaceOrHotseat()) {
|
||||
c.markDeleted("Widget found where container != " +
|
||||
"CONTAINER_DESKTOP nor CONTAINER_HOTSEAT - ignoring!");
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:minWidth="180dp"
|
||||
android:minHeight="110dp"
|
||||
android:minWidth="1dp"
|
||||
android:minHeight="1dp"
|
||||
android:updatePeriodMillis="86400000"
|
||||
android:initialLayout="@layout/test_layout_appwidget_blue"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:minWidth="180dp"
|
||||
android:minHeight="110dp"
|
||||
android:minWidth="1dp"
|
||||
android:minHeight="1dp"
|
||||
android:updatePeriodMillis="86400000"
|
||||
android:initialLayout="@layout/test_layout_appwidget_red"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:minWidth="180dp"
|
||||
android:minHeight="110dp"
|
||||
android:minWidth="1dp"
|
||||
android:minHeight="1dp"
|
||||
android:updatePeriodMillis="86400000"
|
||||
android:initialLayout="@layout/test_layout_appwidget_blue"
|
||||
android:configure="com.android.launcher3.testcomponent.WidgetConfigActivity"
|
||||
|
|
Loading…
Reference in New Issue