summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/WebView.java
diff options
context:
space:
mode:
authorLeon Scroggins <scroggo@google.com>2010-03-09 14:26:07 -0500
committerLeon Scroggins <scroggo@google.com>2010-03-09 14:52:40 -0500
commit7a37587664baf274633db415c4a2589288b653b0 (patch)
tree40722fa7931aeaccaed7256d8d7fa22e949e53aa /core/java/android/webkit/WebView.java
parentf53774bce6f31ac0ae3dd21ab41aa607e548e703 (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.java21
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 {