From 5bb6b52bf38d80462d930e67c93ca7fd8390bfe6 Mon Sep 17 00:00:00 2001 From: Cary Clark Date: Mon, 21 Sep 2009 11:58:31 -0400 Subject: [PATCH] Account for find dialog height in content height Use the set dialog height when the find dialog is up so that found items at the bottom of the screen are scrolled into view. This requires a companion change to set the dialog height in the browser app. Fixes http://b/issue?id=2122916 --- core/java/android/webkit/WebView.java | 31 +++++++++++++++++++++------ 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index b378553b5c58d..2a92e05bca6ea 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -2001,7 +2001,7 @@ public class WebView extends AbsoluteLayout getGlobalVisibleRect(r, p); r.offset(-p.x, -p.y); if (mFindIsUp) { - r.bottom -= FIND_HEIGHT; + r.bottom -= mFindHeight; } } @@ -2073,9 +2073,6 @@ public class WebView extends AbsoluteLayout } } - // Make sure this stays in sync with the actual height of the FindDialog. - private static final int FIND_HEIGHT = 79; - @Override protected int computeVerticalScrollRange() { if (mDrawHistory) { @@ -2306,7 +2303,11 @@ public class WebView extends AbsoluteLayout * that were found. */ public int findAll(String find) { - mFindIsUp = true; + if (mFindIsUp == false) { + recordNewContentSize(mContentWidth, mContentHeight + mFindHeight, + false); + mFindIsUp = true; + } int result = nativeFindAll(find.toLowerCase(), find.toUpperCase()); invalidate(); return result; @@ -2315,6 +2316,7 @@ public class WebView extends AbsoluteLayout // Used to know whether the find dialog is open. Affects whether // or not we draw the highlights for matches. private boolean mFindIsUp; + private int mFindHeight; /** * Return the first substring consisting of the address of a physical @@ -2370,7 +2372,11 @@ public class WebView extends AbsoluteLayout * Clear the highlighting surrounding text matches created by findAll. */ public void clearMatches() { - mFindIsUp = false; + if (mFindIsUp) { + recordNewContentSize(mContentWidth, mContentHeight - mFindHeight, + false); + mFindIsUp = false; + } nativeSetFindIsDown(); // Now that the dialog has been removed, ensure that we scroll to a // location that is not beyond the end of the page. @@ -2378,6 +2384,16 @@ public class WebView extends AbsoluteLayout invalidate(); } + /** + * @hide + */ + public void setFindDialogHeight(int height) { + if (DebugFlags.WEB_VIEW) { + Log.v(LOGTAG, "setFindDialogHeight height=" + height); + } + mFindHeight = height; + } + /** * Query the document to see if it contains any image references. The * message object will be dispatched with arg1 being set to 1 if images @@ -4869,7 +4885,8 @@ public class WebView extends AbsoluteLayout final boolean updateLayout = viewSize.x == mLastWidthSent && viewSize.y == mLastHeightSent; recordNewContentSize(draw.mWidthHeight.x, - draw.mWidthHeight.y, updateLayout); + draw.mWidthHeight.y + + (mFindIsUp ? mFindHeight : 0), updateLayout); if (DebugFlags.WEB_VIEW) { Rect b = draw.mInvalRegion.getBounds(); Log.v(LOGTAG, "NEW_PICTURE_MSG_ID {" +