Notify WidgetHostView drag content change only at onDraw
Reapply RemoteViews can happen asynchronously. RemoteViews may
not finish reinflation right after setColorResource. Let's call
it onDraw.
Test: Manual
Bug: 182282587
Change-Id: I3653b4c64a5897637181f61096464b75945ab5f5
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
index 8df70fb..5c18faf 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
@@ -19,6 +19,7 @@
import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.content.res.Configuration;
+import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Handler;
@@ -120,8 +121,12 @@
} else {
super.setColorResources(colors);
}
+ }
- if (mDragListener != null) {
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ if (mIsInDragMode && mDragListener != null) {
mDragListener.onDragContentChanged();
}
}
diff --git a/src/com/android/launcher3/widget/dragndrop/AppWidgetHostViewDragListener.java b/src/com/android/launcher3/widget/dragndrop/AppWidgetHostViewDragListener.java
index c5e6fbd..66bb363 100644
--- a/src/com/android/launcher3/widget/dragndrop/AppWidgetHostViewDragListener.java
+++ b/src/com/android/launcher3/widget/dragndrop/AppWidgetHostViewDragListener.java
@@ -54,6 +54,8 @@
/** Notifies when there is a content change in the drag view. */
public void onDragContentChanged() {
- mDragObject.dragView.invalidate();
+ if (mDragObject.dragView != null) {
+ mDragObject.dragView.invalidate();
+ }
}
}