OSDN Git Service

Tying accessibility drag lifecycle to that of dragController
authorSunny Goyal <sunnygoyal@google.com>
Mon, 8 Jun 2015 23:52:41 +0000 (16:52 -0700)
committerSunny Goyal <sunnygoyal@google.com>
Tue, 9 Jun 2015 02:22:27 +0000 (19:22 -0700)
Bug: 20865291
Change-Id: I1e0aceb20efcf4c32d76a656c499a1a4a5a32a65

src/com/android/launcher3/Launcher.java
src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java

index 076a6e6..796de3f 100644 (file)
@@ -98,7 +98,6 @@ import android.widget.Toast;
 
 import com.android.launcher3.DropTarget.DragObject;
 import com.android.launcher3.PagedView.PageSwitchListener;
-import com.android.launcher3.accessibility.LauncherAccessibilityDelegate;
 import com.android.launcher3.allapps.AllAppsContainerView;
 import com.android.launcher3.allapps.AppSearchManager;
 import com.android.launcher3.compat.AppWidgetManagerCompat;
@@ -2470,9 +2469,8 @@ public class Launcher extends Activity
             return;
         }
 
-        LauncherAccessibilityDelegate delegate =
-                LauncherAppState.getInstance().getAccessibilityDelegate();
-        if (delegate != null && delegate.onBackPressed()) {
+        if (mDragController.isDragging()) {
+            mDragController.cancelDrag();
             return;
         }
 
index 3c49ccc..fe7b25e 100644 (file)
@@ -20,6 +20,8 @@ import com.android.launcher3.AppInfo;
 import com.android.launcher3.AppWidgetResizeFrame;
 import com.android.launcher3.CellLayout;
 import com.android.launcher3.DeleteDropTarget;
+import com.android.launcher3.DragController.DragListener;
+import com.android.launcher3.DragSource;
 import com.android.launcher3.Folder;
 import com.android.launcher3.FolderInfo;
 import com.android.launcher3.InfoDropTarget;
@@ -39,7 +41,7 @@ import com.android.launcher3.util.Thunk;
 import java.util.ArrayList;
 
 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-public class LauncherAccessibilityDelegate extends AccessibilityDelegate {
+public class LauncherAccessibilityDelegate extends AccessibilityDelegate implements DragListener {
 
     private static final String TAG = "LauncherAccessibilityDelegate";
 
@@ -328,7 +330,6 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate {
         mLauncher.getDragLayer().getDescendantCoordRelativeToSelf(clickedTarget, loc);
         mLauncher.getDragController().completeAccessibleDrag(loc);
 
-        endAccessibleDrag();
         if (!TextUtils.isEmpty(confirmation)) {
             announceConfirmation(confirmation);
         }
@@ -366,22 +367,21 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate {
         }
         mDragSource.enableAccessibleDrag(true);
         mDragSource.startDrag(cellInfo, true);
-    }
 
-    public boolean onBackPressed() {
-        if (isInAccessibleDrag()) {
-            cancelAccessibleDrag();
-            return true;
+        if (mLauncher.getDragController().isDragging()) {
+            mLauncher.getDragController().addDragListener(this);
         }
-        return false;
     }
 
-    private void cancelAccessibleDrag() {
-        mLauncher.getDragController().cancelDrag();
-        endAccessibleDrag();
+
+    @Override
+    public void onDragStart(DragSource source, Object info, int dragAction) {
+        // No-op
     }
 
-    private void endAccessibleDrag() {
+    @Override
+    public void onDragEnd() {
+        mLauncher.getDragController().removeDragListener(this);
         mDragInfo = null;
         if (mDragSource != null) {
             mDragSource.enableAccessibleDrag(false);