summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Leon Scroggins <scroggo@google.com> 2009-09-17 15:55:31 -0400
committer Leon Scroggins <scroggo@google.com> 2009-09-18 10:42:53 -0400
commit58992eac8373ba7260d99dd832a6fc9e3d164460 (patch)
treec34fe51480361900456933d08aebe5962c480b01
parentdfcbc046d7fcd74c8aacd9f26bd48084900d3b4a (diff)
Draw shadow below title, or at top if title is off screen.
Fixes http://b/issue?id=2118813 for the "real" title bar. Also fix http://b/issue?id=2125444 by moving the save after the check for mNativeClass. Change-Id: I8f85f0a76eb7e1d186485ef65c50ae8d4bc10932
-rw-r--r--core/java/android/webkit/WebView.java31
1 files changed, 25 insertions, 6 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 12eb93498091..003c1a2b8523 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -1747,6 +1747,14 @@ public class WebView extends AbsoluteLayout
private View mTitleBar;
/**
+ * Since we draw the title bar ourselves, we removed the shadow from the
+ * browser's activity. We do want a shadow at the bottom of the title bar,
+ * or at the top of the screen if the title bar is not visible. This
+ * drawable serves that purpose.
+ */
+ private Drawable mTitleShadow;
+
+ /**
* Add or remove a title bar to be embedded into the WebView, and scroll
* along with it vertically, while remaining in view horizontally. Pass
* null to remove the title bar from the WebView, and return to drawing
@@ -1762,6 +1770,10 @@ public class WebView extends AbsoluteLayout
addView(v, new AbsoluteLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT, 0, 0));
+ if (mTitleShadow == null) {
+ mTitleShadow = (Drawable) mContext.getResources().getDrawable(
+ com.android.internal.R.drawable.title_bar_shadow);
+ }
}
mTitleBar = v;
}
@@ -2676,16 +2688,14 @@ public class WebView extends AbsoluteLayout
@Override
protected void onDraw(Canvas canvas) {
- int saveCount = canvas.getSaveCount();
- if (mTitleBar != null) {
- canvas.save();
- canvas.translate(0, (int) mTitleBar.getHeight());
- }
// if mNativeClass is 0, the WebView has been destroyed. Do nothing.
if (mNativeClass == 0) {
return;
}
- canvas.save();
+ int saveCount = canvas.save();
+ if (mTitleBar != null) {
+ canvas.translate(0, (int) mTitleBar.getHeight());
+ }
// Update the buttons in the picture, so when we draw the picture
// to the screen, they are in the correct state.
// Tell the native side if user is a) touching the screen,
@@ -2700,6 +2710,15 @@ public class WebView extends AbsoluteLayout
drawCoreAndCursorRing(canvas, mBackgroundColor, mDrawCursorRing);
canvas.restoreToCount(saveCount);
+ // Now draw the shadow.
+ if (mTitleBar != null) {
+ int y = mScrollY + getVisibleTitleHeight();
+ int height = (int) (5f * getContext().getResources()
+ .getDisplayMetrics().density);
+ mTitleShadow.setBounds(mScrollX, y, mScrollX + getWidth(),
+ y + height);
+ mTitleShadow.draw(canvas);
+ }
if (AUTO_REDRAW_HACK && mAutoRedraw) {
invalidate();
}