Merge "Updating search bar animation, and adding use of hw layers." into jb-dev
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index a3d8f8d..71362e8 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -669,6 +669,12 @@
return false;
}
+ // This can happen in some weird cases involving multi-touch. We can't start dragging the
+ // widget if this is null, so we break out.
+ if (mCreateWidgetInfo == null) {
+ return false;
+ }
+
// Compose the drag image
Bitmap preview;
Bitmap outline;
@@ -707,9 +713,11 @@
mWidgetPreviewIconPaddedDimension, Bitmap.Config.ARGB_8888);
Drawable d = image.getDrawable();
mCanvas.setBitmap(preview);
+ mCanvas.save();
mCanvas.translate((mWidgetPreviewIconPaddedDimension - d.getIntrinsicWidth()) / 2,
(mWidgetPreviewIconPaddedDimension - d.getIntrinsicHeight()) / 2);
d.draw(mCanvas);
+ mCanvas.restore();
mCanvas.setBitmap(null);
createItemInfo.spanX = createItemInfo.spanY = 1;
}
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 84fb9d0..e6c25cb 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1129,8 +1129,7 @@
launcherInfo.hostView.setTag(launcherInfo);
launcherInfo.hostView.setVisibility(View.VISIBLE);
- AppWidgetResizeFrame.updateWidgetSizeRanges(launcherInfo.hostView,
- this, launcherInfo.spanX, launcherInfo.spanY);
+ launcherInfo.notifyWidgetSizeChanged(this);
mWorkspace.addInScreen(launcherInfo.hostView, container, screen, cellXY[0], cellXY[1],
launcherInfo.spanX, launcherInfo.spanY, isWorkspaceLocked());
@@ -3165,17 +3164,14 @@
item.hostView.setAppWidget(appWidgetId, appWidgetInfo);
item.hostView.setTag(item);
+ item.onBindAppWidget(this);
workspace.addInScreen(item.hostView, item.container, item.screen, item.cellX,
item.cellY, item.spanX, item.spanY, false);
-
addWidgetToAutoAdvanceIfNeeded(item.hostView, appWidgetInfo);
workspace.requestLayout();
- AppWidgetResizeFrame.updateWidgetSizeRanges(item.hostView,
- this, item.spanX, item.spanY);
-
if (DEBUG_WIDGETS) {
Log.d(TAG, "bound widget id="+item.appWidgetId+" in "
+ (SystemClock.uptimeMillis()-start) + "ms");
diff --git a/src/com/android/launcher2/LauncherAppWidgetInfo.java b/src/com/android/launcher2/LauncherAppWidgetInfo.java
index e5b9473..f001b2b 100644
--- a/src/com/android/launcher2/LauncherAppWidgetInfo.java
+++ b/src/com/android/launcher2/LauncherAppWidgetInfo.java
@@ -42,6 +42,8 @@
int minWidth = -1;
int minHeight = -1;
+ private boolean mHasNotifiedInitialWidgetSizeChanged;
+
/**
* View that holds this widget after it's been created. This view isn't created
* until Launcher knows it's needed.
@@ -65,6 +67,24 @@
values.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId);
}
+ /**
+ * When we bind the widget, we should notify the widget that the size has changed if we have not
+ * done so already (only really for default workspace widgets).
+ */
+ void onBindAppWidget(Launcher launcher) {
+ if (!mHasNotifiedInitialWidgetSizeChanged) {
+ notifyWidgetSizeChanged(launcher);
+ }
+ }
+
+ /**
+ * Trigger an update callback to the widget to notify it that its size has changed.
+ */
+ void notifyWidgetSizeChanged(Launcher launcher) {
+ AppWidgetResizeFrame.updateWidgetSizeRanges(hostView, launcher, spanX, spanY);
+ mHasNotifiedInitialWidgetSizeChanged = true;
+ }
+
@Override
public String toString() {
return "AppWidget(id=" + Integer.toString(appWidgetId) + ")";
diff --git a/src/com/android/launcher2/PagedViewWidget.java b/src/com/android/launcher2/PagedViewWidget.java
index f78aa4c..a6ea78f 100644
--- a/src/com/android/launcher2/PagedViewWidget.java
+++ b/src/com/android/launcher2/PagedViewWidget.java
@@ -141,8 +141,8 @@
class CheckForShortPress implements Runnable {
public void run() {
+ if (sShortpressTarget != null) return;
if (mShortPressListener != null) {
- if (sShortpressTarget != null) return;
mShortPressListener.onShortPress(PagedViewWidget.this);
}
sShortpressTarget = PagedViewWidget.this;