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
This commit is contained in:
Cary Clark
2009-09-21 11:58:31 -04:00
parent e256c79731
commit 5bb6b52bf3

View File

@@ -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 {" +