Fixing bugs with new widget adding

-> widget ids were being reused in some cases
-> widgets could be added before springloaded mode was entered

Change-Id: Iaf3bffc49d4ec2de4b63db1b5cfb52b8544e9c2b
This commit is contained in:
Adam Cohen
2012-02-13 19:27:37 -08:00
parent ed66b2bac7
commit 1b36dc3f2b
4 changed files with 35 additions and 13 deletions
@@ -239,6 +239,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
static final int WIDGET_INFLATED = 1;
int mWidgetCleanupState = WIDGET_NO_CLEANUP_REQUIRED;
int mWidgetLoadingId = -1;
PendingAddWidgetInfo mCreateWidgetInfo = null;
public AppsCustomizePagedView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -580,13 +581,14 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
public void onShortPress(View v) {
// We are anticipating a long press, and we use this time to load bind and instantiate
// the widget. This will need to be cleaned up if it turns out no long press occurs.
PendingAddWidgetInfo createWidgetInfo = (PendingAddWidgetInfo) v.getTag();
loadWidgetInBackground(createWidgetInfo);
mCreateWidgetInfo = new PendingAddWidgetInfo((PendingAddWidgetInfo) v.getTag());
loadWidgetInBackground(mCreateWidgetInfo);
}
@Override
public void cleanUpShortPress(View v) {
PendingAddWidgetInfo info = (PendingAddWidgetInfo) v.getTag();
PendingAddWidgetInfo info = mCreateWidgetInfo;
mCreateWidgetInfo = null;
if (mWidgetCleanupState >= 0 && mWidgetLoadingId != -1) {
mLauncher.getAppWidgetHost().deleteAppWidgetId(mWidgetLoadingId);
}
@@ -613,7 +615,9 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
Bitmap preview;
Bitmap outline;
if (createItemInfo instanceof PendingAddWidgetInfo) {
PendingAddWidgetInfo createWidgetInfo = (PendingAddWidgetInfo) createItemInfo;
PendingAddWidgetInfo createWidgetInfo = mCreateWidgetInfo;
createItemInfo = createWidgetInfo;
mCreateWidgetInfo = null;
int[] spanXY = mLauncher.getSpanForWidget(createWidgetInfo, null);
int[] size = mLauncher.getWorkspace().estimateItemSize(spanXY[0],
spanXY[1], createWidgetInfo, true);
@@ -677,19 +681,23 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
postDelayed(new Runnable() {
@Override
public void run() {
// Dismiss the cling
mLauncher.dismissAllAppsCling(null);
// We don't enter spring-loaded mode if the drag has been cancelled
if (mLauncher.getDragController().isDragging()) {
// Dismiss the cling
mLauncher.dismissAllAppsCling(null);
// Reset the alpha on the dragged icon before we drag
resetDrawableState();
// Reset the alpha on the dragged icon before we drag
resetDrawableState();
// Go into spring loaded mode (must happen before we startDrag())
mLauncher.enterSpringLoadedDragMode();
// Go into spring loaded mode (must happen before we startDrag())
mLauncher.enterSpringLoadedDragMode();
}
}
},150);
return true;
}
private void endDragging(View target, boolean success) {
mLauncher.getWorkspace().onDragStopped(success);
if (!success || (target != mLauncher.getWorkspace() &&
@@ -699,7 +707,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
mLauncher.exitSpringLoadedDragMode();
}
mLauncher.unlockScreenOrientationOnLargeUI();
}
@Override