From 8eff73f79b934fb7f8e9a8c630f2400c13fe35f4 Mon Sep 17 00:00:00 2001 From: Grace Kloba Date: Thu, 24 Sep 2009 09:34:32 -0700 Subject: [PATCH] Restrict touch to the view height with the title. This should fix the links in the bottom of the screen are not touchable when title bar presents. Also fix a bug in calcOutContentVisibleRect. We need to adjust visibleTitleHeight for the top, but we should not do it for the bottom. Otherwise, WebKit will have the wrong visible rect and it will think the part right under the bottom of the screen are visible. Fix http://b/issue?id=2140971 --- core/java/android/webkit/WebView.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 607a989a8f7fa..31caa72b4342e 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -937,11 +937,15 @@ public class WebView extends AbsoluteLayout * Note: this can be called from WebCoreThread. */ /* package */ int getViewHeight() { + return getViewHeightWithTitle() - getVisibleTitleHeight(); + } + + private int getViewHeightWithTitle() { int height = getHeight(); if (isHorizontalScrollBarEnabled() && !mOverlayHorizontalScrollbar) { height -= getHorizontalScrollbarHeight(); } - return height - getVisibleTitleHeight(); + return height; } /** @@ -2023,10 +2027,9 @@ public class WebView extends AbsoluteLayout // the visible height back in to account for the fact that if the title // bar is partially visible, the part of the visible rect which is // displaying our content is displaced by that amount. - int titleHeight = getVisibleTitleHeight(); - r.top = viewToContentY(r.top + titleHeight); + r.top = viewToContentY(r.top + getVisibleTitleHeight()); r.right = viewToContentX(r.right); - r.bottom = viewToContentY(r.bottom + titleHeight); + r.bottom = viewToContentY(r.bottom); } static class ViewSizeData { @@ -3659,8 +3662,8 @@ public class WebView extends AbsoluteLayout if (x > getViewWidth() - 1) { x = getViewWidth() - 1; } - if (y > getViewHeight() - 1) { - y = getViewHeight() - 1; + if (y > getViewHeightWithTitle() - 1) { + y = getViewHeightWithTitle() - 1; } // pass the touch events from UI thread to WebCore thread @@ -4705,7 +4708,7 @@ public class WebView extends AbsoluteLayout rect.offset(child.getLeft() - child.getScrollX(), child.getTop() - child.getScrollY()); - int height = getHeight() - getHorizontalScrollbarHeight(); + int height = getViewHeightWithTitle(); int screenTop = mScrollY; int screenBottom = screenTop + height;