summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGrace Kloba <klobag@google.com>2010-04-14 12:44:05 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-04-14 12:44:05 -0700
commit8a878dde9d15f75446bb5ca3137fccef8426ddd7 (patch)
treebecb08e30adc168ce0ca68b08fe41ee6e8b999a0 /core
parent758dd527f64f1e827adfe09f0141ab213733ca22 (diff)
parent50004bcd4b77d729d64a229149bc294f33768482 (diff)
downloadframeworks_base-8a878dde9d15f75446bb5ca3137fccef8426ddd7.zip
frameworks_base-8a878dde9d15f75446bb5ca3137fccef8426ddd7.tar.gz
frameworks_base-8a878dde9d15f75446bb5ca3137fccef8426ddd7.tar.bz2
Merge "Pass WebKit scrollbar mode to Java. When scrollbar is alwaysOff, don't trigger scroll." into froyo
Diffstat (limited to 'core')
-rw-r--r--core/java/android/webkit/WebView.java28
-rw-r--r--core/java/android/webkit/WebViewCore.java9
2 files changed, 33 insertions, 4 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 7bd83e7..602eedf 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -540,10 +540,10 @@ public class WebView extends AbsoluteLayout
static final int FIND_AGAIN = 126;
static final int CENTER_FIT_RECT = 127;
static final int REQUEST_KEYBOARD_WITH_SELECTION_MSG_ID = 128;
+ static final int SET_SCROLLBAR_MODES = 129;
private static final int FIRST_PACKAGE_MSG_ID = SCROLL_TO_MSG_ID;
- private static final int LAST_PACKAGE_MSG_ID
- = REQUEST_KEYBOARD_WITH_SELECTION_MSG_ID;
+ private static final int LAST_PACKAGE_MSG_ID = SET_SCROLLBAR_MODES;
static final String[] HandlerPrivateDebugString = {
"REMEMBER_PASSWORD", // = 1;
@@ -586,7 +586,8 @@ public class WebView extends AbsoluteLayout
"RETURN_LABEL", // = 125;
"FIND_AGAIN", // = 126;
"CENTER_FIT_RECT", // = 127;
- "REQUEST_KEYBOARD_WITH_SELECTION_MSG_ID" // = 128;
+ "REQUEST_KEYBOARD_WITH_SELECTION_MSG_ID", // = 128;
+ "SET_SCROLLBAR_MODES" // = 129;
};
// If the site doesn't use the viewport meta tag to specify the viewport,
@@ -657,6 +658,14 @@ public class WebView extends AbsoluteLayout
private static final int DRAW_EXTRAS_SELECTION = 2;
private static final int DRAW_EXTRAS_CURSOR_RING = 3;
+ // keep this in sync with WebCore:ScrollbarMode in WebKit
+ private static final int SCROLLBAR_AUTO = 0;
+ private static final int SCROLLBAR_ALWAYSOFF = 1;
+ // as we auto fade scrollbar, this is ignored.
+ private static final int SCROLLBAR_ALWAYSON = 2;
+ private int mHorizontalScrollBarMode = SCROLLBAR_AUTO;
+ private int mVerticalScrollBarMode = SCROLLBAR_AUTO;
+
// Used to match key downs and key ups
private boolean mGotKeyDown;
@@ -2277,6 +2286,8 @@ public class WebView extends AbsoluteLayout
protected int computeHorizontalScrollRange() {
if (mDrawHistory) {
return mHistoryWidth;
+ } else if (mHorizontalScrollBarMode == SCROLLBAR_ALWAYSOFF) {
+ return computeHorizontalScrollExtent();
} else {
// to avoid rounding error caused unnecessary scrollbar, use floor
return (int) Math.floor(mContentWidth * mActualScale);
@@ -2287,6 +2298,8 @@ public class WebView extends AbsoluteLayout
protected int computeVerticalScrollRange() {
if (mDrawHistory) {
return mHistoryHeight;
+ } else if (mVerticalScrollBarMode == SCROLLBAR_ALWAYSOFF) {
+ return computeVerticalScrollExtent();
} else {
// to avoid rounding error caused unnecessary scrollbar, use floor
return (int) Math.floor(mContentHeight * mActualScale);
@@ -5024,7 +5037,9 @@ public class WebView extends AbsoluteLayout
if (settings.supportZoom()
&& settings.getBuiltInZoomControls()
&& !getZoomButtonsController().isVisible()
- && mMinZoomScale < mMaxZoomScale) {
+ && mMinZoomScale < mMaxZoomScale
+ && (mHorizontalScrollBarMode != SCROLLBAR_ALWAYSOFF
+ || mVerticalScrollBarMode != SCROLLBAR_ALWAYSOFF)) {
mZoomButtonsController.setVisible(true);
int count = settings.getDoubleTapToastCount();
if (mInZoomOverview && count > 0) {
@@ -6641,6 +6656,11 @@ public class WebView extends AbsoluteLayout
centerFitRect(r.left, r.top, r.width(), r.height());
break;
+ case SET_SCROLLBAR_MODES:
+ mHorizontalScrollBarMode = msg.arg1;
+ mVerticalScrollBarMode = msg.arg2;
+ break;
+
default:
super.handleMessage(msg);
break;
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 0175aed..4118119 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -2453,6 +2453,15 @@ final class WebViewCore {
new Rect(x, y, x + width, y + height)).sendToTarget();
}
+ // called by JNI
+ private void setScrollbarModes(int hMode, int vMode) {
+ if (mWebView == null) {
+ return;
+ }
+ mWebView.mPrivateHandler.obtainMessage(WebView.SET_SCROLLBAR_MODES,
+ hMode, vMode).sendToTarget();
+ }
+
private native void nativePause();
private native void nativeResume();
private native void nativeFreeMemory();