Merge "add more alt key acceleration in webview" into honeycomb
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 9823bc0..61f0bce 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -4573,12 +4573,32 @@
}
if (keyCode == KeyEvent.KEYCODE_PAGE_UP) {
- pageUp(false);
- return true;
+ if (event.hasNoModifiers()) {
+ pageUp(false);
+ return true;
+ } else if (event.hasModifiers(KeyEvent.META_ALT_ON)) {
+ pageUp(true);
+ return true;
+ }
}
if (keyCode == KeyEvent.KEYCODE_PAGE_DOWN) {
- pageDown(false);
+ if (event.hasNoModifiers()) {
+ pageDown(false);
+ return true;
+ } else if (event.hasModifiers(KeyEvent.META_ALT_ON)) {
+ pageDown(true);
+ return true;
+ }
+ }
+
+ if (keyCode == KeyEvent.KEYCODE_MOVE_HOME && event.hasNoModifiers()) {
+ pageUp(true);
+ return true;
+ }
+
+ if (keyCode == KeyEvent.KEYCODE_MOVE_END && event.hasNoModifiers()) {
+ pageDown(true);
return true;
}
@@ -4589,6 +4609,22 @@
letPageHandleNavKey(keyCode, event.getEventTime(), true, event.getMetaState());
return true;
}
+ if (event.hasModifiers(KeyEvent.META_ALT_ON)) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_DPAD_UP:
+ pageUp(true);
+ return true;
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ pageDown(true);
+ return true;
+ case KeyEvent.KEYCODE_DPAD_LEFT:
+ nativeClearCursor(); // start next trackball movement from page edge
+ return pinScrollTo(0, mScrollY, true, 0);
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
+ nativeClearCursor(); // start next trackball movement from page edge
+ return pinScrollTo(mContentWidth, mScrollY, true, 0);
+ }
+ }
if (mSelectingText) {
int xRate = keyCode == KeyEvent.KEYCODE_DPAD_LEFT
? -1 : keyCode == KeyEvent.KEYCODE_DPAD_RIGHT ? 1 : 0;
@@ -7947,6 +7983,9 @@
Rect contentCursorRingBounds = nativeGetCursorRingBounds();
if (contentCursorRingBounds.isEmpty()) return keyHandled;
Rect viewCursorRingBounds = contentToViewRect(contentCursorRingBounds);
+ // set last touch so that context menu related functions will work
+ mLastTouchX = (viewCursorRingBounds.left + viewCursorRingBounds.right) / 2;
+ mLastTouchY = (viewCursorRingBounds.top + viewCursorRingBounds.bottom) / 2;
Rect visRect = new Rect();
calcOurVisibleRect(visRect);
Rect outset = new Rect(visRect);