diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 9735beec58..83ca08d4a0 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1777,7 +1777,7 @@ public class Workspace extends PagedView boolean droppedOnOriginalCell = false; - int snapScreen = -1; + boolean snappedToNewPage = false; boolean resizeOnDrop = false; Runnable onCompleteRunnable = null; if (d.dragSource != this || mDragInfo == null) { @@ -1859,11 +1859,14 @@ public class Workspace extends PagedView } if (foundCell) { - if (getScreenIdForPageIndex(mCurrentPage) != screenId && !hasMovedIntoHotseat) { - snapScreen = getPageIndexForScreenId(screenId); + int targetScreenIndex = getPageIndexForScreenId(screenId); + int snapScreen = getLeftmostVisiblePageForIndex(targetScreenIndex); + // On large screen devices two pages can be shown at the same time, and snap + // isn't needed if the source and target screens appear at the same time + if (snapScreen != mCurrentPage && !hasMovedIntoHotseat) { snapToPage(snapScreen); + snappedToNewPage = true; } - final ItemInfo info = (ItemInfo) cell.getTag(); if (hasMovedLayouts) { // Reparent the view @@ -1955,7 +1958,7 @@ public class Workspace extends PagedView ANIMATE_INTO_POSITION_AND_DISAPPEAR; animateWidgetDrop(info, parent, d.dragView, null, animationType, cell, false); } else { - int duration = snapScreen < 0 ? -1 : ADJACENT_SCREEN_DROP_DURATION; + int duration = snappedToNewPage ? ADJACENT_SCREEN_DROP_DURATION : -1; mLauncher.getDragLayer().animateViewIntoPosition(d.dragView, cell, duration, this); } diff --git a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java index 9faac5b7ef..0fb5e778d0 100644 --- a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java +++ b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java @@ -188,7 +188,8 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme private boolean itemSupportsAccessibleDrag(ItemInfo item) { if (item instanceof WorkspaceItemInfo) { // Support the action unless the item is in a context menu. - return item.screenId >= 0 && item.container != Favorites.CONTAINER_HOTSEAT_PREDICTION; + return (item.screenId >= 0 || item.screenId == Workspace.LEFT_PANEL_ID) + && item.container != Favorites.CONTAINER_HOTSEAT_PREDICTION; } return (item instanceof LauncherAppWidgetInfo) || (item instanceof FolderInfo);