Fixing issue where widget preloading not being cleaned up on failed drop
-> issue 6046370
Change-Id: Iee33fc22ae0bfe012fe33efd5b358a2199fdf424
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index ff1118c..865c894 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -239,6 +239,7 @@
int mWidgetCleanupState = WIDGET_NO_CLEANUP_REQUIRED;
int mWidgetLoadingId = -1;
PendingAddWidgetInfo mCreateWidgetInfo = null;
+ private boolean mDraggingWidget = false;
public AppsCustomizePagedView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -585,8 +586,7 @@
loadWidgetInBackground(mCreateWidgetInfo);
}
- @Override
- public void cleanUpShortPress(View v) {
+ private void cleanupWidgetPreloading() {
PendingAddWidgetInfo info = mCreateWidgetInfo;
mCreateWidgetInfo = null;
if (mWidgetCleanupState >= 0 && mWidgetLoadingId != -1) {
@@ -604,10 +604,15 @@
mWidgetLoadingId = -1;
}
- private void beginDraggingWidget(View v) {
- mWidgetCleanupState = WIDGET_NO_CLEANUP_REQUIRED;
- mWidgetLoadingId = -1;
+ @Override
+ public void cleanUpShortPress(View v) {
+ if (!mDraggingWidget) {
+ cleanupWidgetPreloading();
+ }
+ }
+ private void beginDraggingWidget(View v) {
+ mDraggingWidget = true;
// Get the widget preview as the drag representation
ImageView image = (ImageView) v.findViewById(R.id.widget_preview);
PendingAddItemInfo createItemInfo = (PendingAddItemInfo) v.getTag();
@@ -618,7 +623,6 @@
if (createItemInfo instanceof PendingAddWidgetInfo) {
PendingAddWidgetInfo createWidgetInfo = mCreateWidgetInfo;
createItemInfo = createWidgetInfo;
- mCreateWidgetInfo = null;
int[] spanXY = mLauncher.getSpanForWidget(createWidgetInfo, null);
int[] size = mLauncher.getWorkspace().estimateItemSize(spanXY[0],
spanXY[1], createWidgetInfo, true);
@@ -729,8 +733,11 @@
if (showOutOfSpaceMessage) {
mLauncher.showOutOfSpaceMessage();
}
+
d.deferDragViewCleanupPostAnimation = false;
+ cleanupWidgetPreloading();
}
+ mDraggingWidget = false;
}
@Override