diff options
| author | Leon Scroggins <scroggo@google.com> | 2010-03-09 14:26:07 -0500 |
|---|---|---|
| committer | Leon Scroggins <scroggo@google.com> | 2010-03-09 14:52:40 -0500 |
| commit | 7a37587664baf274633db415c4a2589288b653b0 (patch) | |
| tree | 40722fa7931aeaccaed7256d8d7fa22e949e53aa /core/java/android/webkit/WebView.java | |
| parent | f53774bce6f31ac0ae3dd21ab41aa607e548e703 (diff) | |
Set mShiftIsPressed properly when the focus is a plugin.
Fix for http://b/issue?id=2484986
Change-Id: I3140c3c3a0bd44af85939aceb0bbd07c0861cde4
Diffstat (limited to 'core/java/android/webkit/WebView.java')
| -rw-r--r-- | core/java/android/webkit/WebView.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index e3fd29fb31b6..655c4c5bb3ce 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3691,11 +3691,13 @@ public class WebView extends AbsoluteLayout return false; } - if (mShiftIsPressed == false && nativeCursorWantsKeyEvents() == false - && !nativeFocusIsPlugin() - && (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT - || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT)) { - setUpSelectXY(); + if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT + || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT) { + if (nativeFocusIsPlugin()) { + mShiftIsPressed = true; + } else if (!nativeCursorWantsKeyEvents() && !mShiftIsPressed) { + setUpSelectXY(); + } } if (keyCode >= KeyEvent.KEYCODE_DPAD_UP @@ -3834,7 +3836,10 @@ public class WebView extends AbsoluteLayout if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT) { - if (commitCopy()) { + if (nativeFocusIsPlugin()) { + mShiftIsPressed = false; + return true; + } else if (commitCopy()) { return true; } } @@ -4195,7 +4200,9 @@ public class WebView extends AbsoluteLayout public boolean dispatchKeyEvent(KeyEvent event) { boolean dispatch = true; - if (!inEditingMode()) { + // Textfields and plugins need to receive the shift up key even if + // another key was released while the shift key was held down. + if (!inEditingMode() && !nativeFocusIsPlugin()) { if (event.getAction() == KeyEvent.ACTION_DOWN) { mGotKeyDown = true; } else { |
