diff options
| author | 2009-09-17 15:55:31 -0400 | |
|---|---|---|
| committer | 2009-09-18 10:42:53 -0400 | |
| commit | 58992eac8373ba7260d99dd832a6fc9e3d164460 (patch) | |
| tree | c34fe51480361900456933d08aebe5962c480b01 | |
| parent | dfcbc046d7fcd74c8aacd9f26bd48084900d3b4a (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.java | 31 |
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(); } |