summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit
diff options
context:
space:
mode:
authorCary Clark <cary@android.com>2010-01-27 17:03:05 -0500
committerCary Clark <cary@android.com>2010-02-17 13:18:45 -0500
commit855dd9e074c4dcb9c90deaeff1eb33d6394dd5da (patch)
tree20281771e75de017898ea04a129af4d8f47056c2 /core/java/android/webkit
parent900ec77d62ad1813ec7c38ddf13519a2f21e23f8 (diff)
downloadframeworks_base-855dd9e074c4dcb9c90deaeff1eb33d6394dd5da.zip
frameworks_base-855dd9e074c4dcb9c90deaeff1eb33d6394dd5da.tar.gz
frameworks_base-855dd9e074c4dcb9c90deaeff1eb33d6394dd5da.tar.bz2
Add UI considerations to layers
companion fix is in external/webkit - Add class to return view metrics. - Draw cursor rings and find matches in proper order. http://b/2369549
Diffstat (limited to 'core/java/android/webkit')
-rw-r--r--core/java/android/webkit/WebView.java50
1 files changed, 33 insertions, 17 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index ae6c666..acb64aa 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -3105,11 +3105,26 @@ public class WebView extends AbsoluteLayout
}
}
+ private static class Metrics {
+ int mScrollX;
+ int mScrollY;
+ int mWidth;
+ int mHeight;
+ float mScale;
+ }
+
+ private Metrics getViewMetrics() {
+ Metrics metrics = new Metrics();
+ metrics.mScrollX = mScrollX;
+ metrics.mScrollY = computeVerticalScrollOffset();
+ metrics.mWidth = getWidth();
+ metrics.mHeight = getHeight() - getVisibleTitleHeight();
+ metrics.mScale = mActualScale;
+ return metrics;
+ }
+
private void drawLayers(Canvas canvas) {
if (mRootLayer != 0) {
- int scrollY = computeVerticalScrollOffset();
- int viewHeight = getHeight() - getVisibleTitleHeight();
-
// Currently for each draw we compute the animation values;
// We may in the future decide to do that independently.
if (nativeEvaluateLayersAnimations(mRootLayer)) {
@@ -3119,9 +3134,7 @@ public class WebView extends AbsoluteLayout
}
// We can now draw the layers.
- nativeDrawLayers(mRootLayer, mScrollX, scrollY,
- getWidth(), viewHeight,
- mActualScale, canvas);
+ nativeDrawLayers(mRootLayer, canvas);
}
}
@@ -3209,7 +3222,15 @@ public class WebView extends AbsoluteLayout
mWebViewCore.drawContentPicture(canvas, color,
(animateZoom || mPreviewZoomOnly), animateScroll);
-
+ boolean cursorIsInLayer = nativeCursorIsInLayer();
+ if (drawCursorRing && !cursorIsInLayer) {
+ nativeDrawCursorRing(canvas);
+ }
+ // When the FindDialog is up, only draw the matches if we are not in
+ // the process of scrolling them into view.
+ if (mFindIsUp && !animateScroll) {
+ nativeDrawMatches(canvas);
+ }
drawLayers(canvas);
if (mNativeClass == 0) return;
@@ -3232,12 +3253,7 @@ public class WebView extends AbsoluteLayout
LONG_PRESS_TIMEOUT);
}
}
- nativeDrawCursorRing(canvas);
- }
- // When the FindDialog is up, only draw the matches if we are not in
- // the process of scrolling them into view.
- if (mFindIsUp && !animateScroll) {
- nativeDrawMatches(canvas);
+ if (cursorIsInLayer) nativeDrawCursorRing(canvas);
}
if (mFocusSizeChanged) {
mFocusSizeChanged = false;
@@ -5952,6 +5968,7 @@ public class WebView extends AbsoluteLayout
case SET_ROOT_LAYER_MSG_ID: {
int oldLayer = mRootLayer;
mRootLayer = msg.arg1;
+ nativeSetRootLayer(mRootLayer);
if (oldLayer > 0) {
nativeDestroyLayer(oldLayer);
}
@@ -6715,6 +6732,7 @@ public class WebView extends AbsoluteLayout
/* package */ native boolean nativeCursorMatchesFocus();
private native boolean nativeCursorIntersects(Rect visibleRect);
private native boolean nativeCursorIsAnchor();
+ private native boolean nativeCursorIsInLayer();
private native boolean nativeCursorIsTextInput();
private native Point nativeCursorPosition();
private native String nativeCursorText();
@@ -6728,10 +6746,7 @@ public class WebView extends AbsoluteLayout
private native void nativeDrawCursorRing(Canvas content);
private native void nativeDestroyLayer(int layer);
private native boolean nativeEvaluateLayersAnimations(int layer);
- private native void nativeDrawLayers(int layer,
- int scrollX, int scrollY,
- int width, int height,
- float scale, Canvas canvas);
+ private native void nativeDrawLayers(int layer, Canvas canvas);
private native void nativeDrawMatches(Canvas canvas);
private native void nativeDrawSelectionPointer(Canvas content,
float scale, int x, int y, boolean extendSelection);
@@ -6781,6 +6796,7 @@ public class WebView extends AbsoluteLayout
private native void nativeSetFindIsUp();
private native void nativeSetFollowedLink(boolean followed);
private native void nativeSetHeightCanMeasure(boolean measure);
+ private native void nativeSetRootLayer(int layer);
private native int nativeTextGeneration();
// Never call this version except by updateCachedTextfield(String) -
// we always want to pass in our generation number.