summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrick Dubroy <dubroy@google.com>2010-10-29 15:03:24 -0700
committerPatrick Dubroy <dubroy@google.com>2010-10-29 15:03:34 -0700
commit9438336724b4f8b54c7cdc49c5f01dd9568926eb (patch)
tree928f253972982adbe15eb5f01f5efad9d41e5050 /src
parent3c4c20fbe682cb4b3ef94f09afe0af09171583f3 (diff)
downloadandroid_packages_apps_Trebuchet-9438336724b4f8b54c7cdc49c5f01dd9568926eb.tar.gz
android_packages_apps_Trebuchet-9438336724b4f8b54c7cdc49c5f01dd9568926eb.tar.bz2
android_packages_apps_Trebuchet-9438336724b4f8b54c7cdc49c5f01dd9568926eb.zip
Fix NPE when dragging an item to a full home screen
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher2/Workspace.java42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index e385f8f1a..2ddd04482 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -1252,26 +1252,30 @@ public class Workspace extends SmoothPagedView
mDragInfo.spanX, mDragInfo.spanY, cell, mDragTargetLayout,
mTargetCell);
- int screen = indexOfChild(mDragTargetLayout);
- if (screen != mDragInfo.screen) {
- final CellLayout originalCellLayout = (CellLayout) getChildAt(mDragInfo.screen);
- originalCellLayout.removeView(cell);
- addInScreen(cell, screen, mTargetCell[0], mTargetCell[1],
- mDragInfo.spanX, mDragInfo.spanY);
- }
+ if (mTargetCell == null) {
+ mLauncher.showOutOfSpaceMessage();
+ } else {
+ int screen = indexOfChild(mDragTargetLayout);
+ if (screen != mDragInfo.screen) {
+ // Reparent the view
+ ((CellLayout) getChildAt(mDragInfo.screen)).removeView(cell);
+ addInScreen(cell, screen, mTargetCell[0], mTargetCell[1],
+ mDragInfo.spanX, mDragInfo.spanY);
+ }
- // update the item's position after drop
- final ItemInfo info = (ItemInfo) cell.getTag();
- CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams();
- mDragTargetLayout.onMove(cell, mTargetCell[0], mTargetCell[1]);
- lp.cellX = mTargetCell[0];
- lp.cellY = mTargetCell[1];
- cell.setId(LauncherModel.getCellLayoutChildId(-1, mDragInfo.screen,
- mTargetCell[0], mTargetCell[1], mDragInfo.spanX, mDragInfo.spanY));
-
- LauncherModel.moveItemInDatabase(mLauncher, info,
- LauncherSettings.Favorites.CONTAINER_DESKTOP, screen,
- lp.cellX, lp.cellY);
+ // update the item's position after drop
+ final ItemInfo info = (ItemInfo) cell.getTag();
+ CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams();
+ mDragTargetLayout.onMove(cell, mTargetCell[0], mTargetCell[1]);
+ lp.cellX = mTargetCell[0];
+ lp.cellY = mTargetCell[1];
+ cell.setId(LauncherModel.getCellLayoutChildId(-1, mDragInfo.screen,
+ mTargetCell[0], mTargetCell[1], mDragInfo.spanX, mDragInfo.spanY));
+
+ LauncherModel.moveItemInDatabase(mLauncher, info,
+ LauncherSettings.Favorites.CONTAINER_DESKTOP, screen,
+ lp.cellX, lp.cellY);
+ }
}
final CellLayout parent = (CellLayout) cell.getParent();