OSDN Git Service

Dragging in touch explore mode should not become exploring.
authorSvetoslav Ganov <svetoslavganov@google.com>
Wed, 12 Oct 2011 01:19:10 +0000 (18:19 -0700)
committerSvetoslav Ganov <svetoslavganov@google.com>
Wed, 12 Oct 2011 01:22:16 +0000 (18:22 -0700)
In touch exploration two fingers in the same direction drag and if one of them
goes up the other starts to touch explore. This however causes inadvertent touch
exploring to happen on almost every scroll causing confusion. Now two finger
drag and they should both go up to allow exploring. This way the inadvertent
exploring is gone and user experience is much better.

bug:5440411

Change-Id: Id8aaece92e5dea1fc740400d2adc9dd63a1674e4

services/java/com/android/server/accessibility/TouchExplorer.java

index 5875ee3..3c6b416 100644 (file)
@@ -457,6 +457,9 @@ public class TouchExplorer implements Explorer {
             case MotionEvent.ACTION_MOVE: {
                 final int activePointerCount = mPointerTracker.getActivePointerCount();
                 switch (activePointerCount) {
+                    case 1: {
+                        // do nothing
+                    } break;
                     case 2: {
                         if (isDraggingGesture(event)) {
                             // If still dragging send a drag event.
@@ -484,10 +487,12 @@ public class TouchExplorer implements Explorer {
                 }
             } break;
             case MotionEvent.ACTION_POINTER_UP: {
-                mCurrentState = STATE_TOUCH_EXPLORING;
                 // Send an event to the end of the drag gesture.
                 sendMotionEvent(event, MotionEvent.ACTION_UP, pointerIdBits, policyFlags);
              } break;
+            case MotionEvent.ACTION_UP: {
+                mCurrentState = STATE_TOUCH_EXPLORING;
+            } break;
             case MotionEvent.ACTION_CANCEL: {
                 clear();
             } break;
@@ -500,7 +505,7 @@ public class TouchExplorer implements Explorer {
      * @param event The event to be handled.
      * @param policyFlags The policy flags associated with the event.
      */
-    public void handleMotionEventStateDelegating(MotionEvent event, int policyFlags) {
+    private void handleMotionEventStateDelegating(MotionEvent event, int policyFlags) {
         switch (event.getActionMasked()) {
             case MotionEvent.ACTION_DOWN: {
                 throw new IllegalStateException("Delegating state can only be reached if "