diff options
author | Patrick Dubroy <dubroy@google.com> | 2010-10-29 15:03:24 -0700 |
---|---|---|
committer | Patrick Dubroy <dubroy@google.com> | 2010-10-29 15:03:34 -0700 |
commit | 9438336724b4f8b54c7cdc49c5f01dd9568926eb (patch) | |
tree | 928f253972982adbe15eb5f01f5efad9d41e5050 /src/com/android/launcher2/Workspace.java | |
parent | 3c4c20fbe682cb4b3ef94f09afe0af09171583f3 (diff) | |
download | android_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/com/android/launcher2/Workspace.java')
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 42 |
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(); |