When Accessibility is on, intercept touch events during dispatch.
This allows Accessibility code to safely inject events into onTouchEvent() without accidentally intercepting them. Bug: 7137557 Change-Id: Ie4fa8e3be5b1bb84f57c6254feab1129cb89998fmain
parent
2935276110
commit
dc2ee77724
|
@ -105,15 +105,15 @@ public class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat {
|
|||
}
|
||||
|
||||
/**
|
||||
* Receives motion events when touch exploration is turned on in SDK
|
||||
* versions ICS and higher.
|
||||
* Intercepts touch events before dispatch when touch exploration is turned
|
||||
* on in ICS and higher.
|
||||
*
|
||||
* @param event The motion event.
|
||||
* @param event The motion event being dispatched.
|
||||
* @return {@code true} if the event is handled
|
||||
*/
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
public boolean dispatchTouchEvent(MotionEvent event) {
|
||||
// To avoid accidental key presses during touch exploration, always drop
|
||||
// non-hover touch events.
|
||||
// touch events generated by the user.
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -660,14 +660,19 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
return mOldPointerCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchTouchEvent(MotionEvent event) {
|
||||
if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
|
||||
return AccessibleKeyboardViewProxy.getInstance().dispatchTouchEvent(event);
|
||||
}
|
||||
return super.dispatchTouchEvent(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(final MotionEvent me) {
|
||||
if (getKeyboard() == null) {
|
||||
return false;
|
||||
}
|
||||
if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
|
||||
return AccessibleKeyboardViewProxy.getInstance().onTouchEvent(me);
|
||||
}
|
||||
return mTouchScreenRegulator.onTouchEvent(me);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue