diff options
Diffstat (limited to 'src/com/android/browser/BaseUi.java')
| -rw-r--r-- | src/com/android/browser/BaseUi.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index 2a23bb10a..5f8944fc8 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -34,12 +34,15 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.webkit.WebChromeClient; import android.webkit.WebHistoryItem; import android.webkit.WebView; import android.widget.FrameLayout; +import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.Toast; @@ -164,6 +167,16 @@ public class BaseUi implements UI, WebViewFactory { return w; } + @Override + public WebView createSubWebView(boolean privateBrowsing) { + ScrollWebView web = (ScrollWebView) createWebView(privateBrowsing); + if (mXLargeScreenSize) { + // no scroll listener for subview + web.setScrollListener(null); + } + return web; + } + void stopWebViewScrolling() { ScrollWebView web = (ScrollWebView) mUiController.getCurrentWebView(); if (web != null) { @@ -415,6 +428,33 @@ public class BaseUi implements UI, WebViewFactory { } /** + * create a sub window container and webview for the tab + * Note: this methods operates through side-effects for now + * it sets both the subView and subViewContainer for the given tab + * @param tab tab to create the sub window for + * @param subView webview to be set as a subwindow for the tab + */ + @Override + public void createSubWindow(Tab tab, WebView subView) { + View subViewContainer = mActivity.getLayoutInflater().inflate( + R.layout.browser_subwindow, null); + ViewGroup inner = (ViewGroup) subViewContainer + .findViewById(R.id.inner_container); + inner.addView(subView, new LayoutParams(LayoutParams.MATCH_PARENT, + LayoutParams.MATCH_PARENT)); + final ImageButton cancel = (ImageButton) subViewContainer + .findViewById(R.id.subwindow_close); + final WebView cancelSubView = subView; + cancel.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + cancelSubView.getWebChromeClient().onCloseWindow(cancelSubView); + } + }); + tab.setSubWebView(subView); + tab.setSubViewContainer(subViewContainer); + } + + /** * Remove the sub window from the content view. */ @Override @@ -428,6 +468,10 @@ public class BaseUi implements UI, WebViewFactory { */ @Override public void attachSubWindow(View container) { + if (container.getParent() != null) { + // already attached, remove first + ((ViewGroup) container.getParent()).removeView(container); + } mContentView.addView(container, COVER_SCREEN_PARAMS); } |
