diff options
author | Michael Kolb <kolby@google.com> | 2011-06-01 09:54:20 -0700 |
---|---|---|
committer | Michael Kolb <kolby@google.com> | 2011-06-01 10:40:00 -0700 |
commit | 0f91e03b5e614bfd1bae969652172a933faf23c5 (patch) | |
tree | 2d10fc730ba6d39d4f107ef05f4c84a5caeb2ee5 /src/com/android/browser/NavTabView.java | |
parent | db343c57c970bb2e3b8f269fc4cbe90546357257 (diff) | |
download | packages_apps_Browser-0f91e03b5e614bfd1bae969652172a933faf23c5.zip packages_apps_Browser-0f91e03b5e614bfd1bae969652172a933faf23c5.tar.gz packages_apps_Browser-0f91e03b5e614bfd1bae969652172a933faf23c5.tar.bz2 |
use webview proxy in nav screen
Change-Id: If5c914dfad48cd4b13cd5fe81374e8adc35060f9
Diffstat (limited to 'src/com/android/browser/NavTabView.java')
-rw-r--r-- | src/com/android/browser/NavTabView.java | 81 |
1 files changed, 61 insertions, 20 deletions
diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java index ec42c94..061e024 100644 --- a/src/com/android/browser/NavTabView.java +++ b/src/com/android/browser/NavTabView.java @@ -18,6 +18,7 @@ package com.android.browser; import android.content.Context; import android.content.res.Resources; +import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.TypedValue; @@ -32,21 +33,23 @@ import android.widget.TextView; public class NavTabView extends LinearLayout { - Tab mTab; - BrowserWebView mWebView; - ImageButton mForward; - ImageButton mRefresh; - ImageView mFavicon; - ImageButton mClose; - FrameLayout mContainer; - TextView mTitle; - View mTitleBar; - OnClickListener mClickListener; - boolean mHighlighted; - Drawable mTitleBg; - Drawable mUrlBg; - float mMediumTextSize; - float mSmallTextSize; + private Tab mTab; + private BrowserWebView mWebView; + private WebProxyView mProxy; + private ImageButton mForward; + private ImageButton mRefresh; + private ImageView mFavicon; + private ImageButton mClose; + private FrameLayout mContainer; + private TextView mTitle; + private View mTitleBar; + private OnClickListener mClickListener; + private boolean mHighlighted; + private Drawable mTitleBg; + private Drawable mUrlBg; + private float mMediumTextSize; + private float mSmallTextSize; + private boolean mPaused; public NavTabView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @@ -82,6 +85,20 @@ public class NavTabView extends LinearLayout { setState(false); } + protected void pause() { + mPaused = true; + mWebView.onPause(); + } + + protected void resume() { + mPaused = false; + mWebView.onResume(); + } + + protected boolean isPaused() { + return mPaused; + } + protected boolean isRefresh(View v) { return v == mRefresh; } @@ -99,7 +116,7 @@ public class NavTabView extends LinearLayout { } protected boolean isWebView(View v) { - return v == mWebView; + return v == mProxy; } protected void setHighlighted(boolean highlighted) { @@ -153,8 +170,8 @@ public class NavTabView extends LinearLayout { if (web == null) return; mWebView = web; removeFromParent(mWebView); - mWebView.setNavMode(true); - mContainer.addView(mWebView, 0); + mProxy = new WebProxyView(mContext, mWebView); + mContainer.addView(mProxy, 0); if (mWebView != null) { mForward.setVisibility(mWebView.canGoForward() ? View.VISIBLE : View.GONE); @@ -174,15 +191,39 @@ public class NavTabView extends LinearLayout { mRefresh.setOnClickListener(mClickListener); mForward.setOnClickListener(mClickListener); mClose.setOnClickListener(mClickListener); - if (mWebView != null) { - mWebView.setOnClickListener(mClickListener); + if (mProxy != null) { + mProxy.setOnClickListener(mClickListener); } } + @Override + public void onDetachedFromWindow() { + mWebView.setProxyView(null); + } + private static void removeFromParent(View v) { if (v.getParent() != null) { ((ViewGroup) v.getParent()).removeView(v); } } + static class WebProxyView extends View { + + private BrowserWebView mWeb; + + public WebProxyView(Context context, BrowserWebView web) { + super(context); + setWillNotDraw(false); + mWeb = web; + mWeb.setProxyView(this); + + } + + public void onDraw(Canvas c) { + c.translate(-mWeb.getScrollX(), -mWeb.getScrollY()); + mWeb.onDraw(c); + } + + } + } |