diff options
| author | Michael Wright <michaelwr@google.com> | 2015-05-14 14:48:08 +0100 |
|---|---|---|
| committer | Michael Wright <michaelwr@google.com> | 2015-05-14 14:48:08 +0100 |
| commit | 5bd69e6e6164c59a0423edd0d5243fc8c07e6af3 (patch) | |
| tree | b1fb669f40ae6038e271f7c1a81ca46c7a19fb0b /core/java/android/view/ViewRootImpl.java | |
| parent | 96238051621ba2dc8a1c20fa48a00ec6ec4735d6 (diff) | |
| download | frameworks_base-5bd69e6e6164c59a0423edd0d5243fc8c07e6af3.zip frameworks_base-5bd69e6e6164c59a0423edd0d5243fc8c07e6af3.tar.gz frameworks_base-5bd69e6e6164c59a0423edd0d5243fc8c07e6af3.tar.bz2 | |
Revert "Revert "Add new MotionEvent actions for button press and release.""
This reverts commit 96238051621ba2dc8a1c20fa48a00ec6ec4735d6.
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index fda6e63..c4a8776 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -40,6 +40,7 @@ import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; import android.media.AudioManager; import android.os.Binder; +import android.os.Build; import android.os.Bundle; import android.os.Debug; import android.os.Handler; @@ -5320,7 +5321,7 @@ public final class ViewRootImpl implements ViewParent, //Log.d(TAG, ">>>>>> CALLING relayout"); if (params != null && mOrigWindowType != params.type) { // For compatibility with old apps, don't crash here. - if (mTargetSdkVersion < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + if (mTargetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { Slog.w(TAG, "Window type can not be changed after " + "the window is added; ignoring change of " + mView); params.type = mOrigWindowType; @@ -5745,6 +5746,7 @@ public final class ViewRootImpl implements ViewParent, void enqueueInputEvent(InputEvent event, InputEventReceiver receiver, int flags, boolean processImmediately) { + adjustInputEventForCompatibility(event); QueuedInputEvent q = obtainQueuedInputEvent(event, receiver, flags); // Always enqueue the input event in order, regardless of its time stamp. @@ -5850,6 +5852,19 @@ public final class ViewRootImpl implements ViewParent, recycleQueuedInputEvent(q); } + private void adjustInputEventForCompatibility(InputEvent e) { + if (mTargetSdkVersion < Build.VERSION_CODES.MNC && e instanceof MotionEvent) { + MotionEvent motion = (MotionEvent) e; + final int mask = + MotionEvent.BUTTON_STYLUS_PRIMARY | MotionEvent.BUTTON_STYLUS_SECONDARY; + final int buttonState = motion.getButtonState(); + final int compatButtonState = (buttonState & mask) >> 4; + if (compatButtonState != 0) { + motion.setButtonState(buttonState | compatButtonState); + } + } + } + static boolean isTerminalInputEvent(InputEvent event) { if (event instanceof KeyEvent) { final KeyEvent keyEvent = (KeyEvent)event; |
