fix titlebar disappearing on tab switch
Bug: 6343476
Consolidate some quickcontrols code and set titlebar for BrowserWebView
before attaching
Change-Id: I3bc8100e3905538aae73be7a07fb611702c5e54b
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 652f9d7..54b2f18 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -32,7 +32,6 @@
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
-import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -112,6 +111,7 @@
protected boolean mUseQuickControls;
protected TitleBar mTitleBar;
private NavigationBarBase mNavigationBar;
+ protected PieControl mPieControl;
public BaseUi(Activity browser, UiController controller) {
mActivity = browser;
@@ -196,6 +196,21 @@
return false;
}
+ @Override
+ public void setUseQuickControls(boolean useQuickControls) {
+ mUseQuickControls = useQuickControls;
+ mTitleBar.setUseQuickControls(mUseQuickControls);
+ if (useQuickControls) {
+ mPieControl = new PieControl(mActivity, mUiController, this);
+ mPieControl.attachToContainer(mContentView);
+ } else {
+ if (mPieControl != null) {
+ mPieControl.removeFromContainer(mContentView);
+ }
+ }
+ updateUrlBarAutoShowManagerTarget();
+ }
+
// Tab callbacks
@Override
public void onTabDataChanged(Tab tab) {
@@ -247,9 +262,19 @@
}
}
mActiveTab = tab;
- WebView web = mActiveTab.getWebView();
+ BrowserWebView web = (BrowserWebView) mActiveTab.getWebView();
updateUrlBarAutoShowManagerTarget();
attachTabToContentView(tab);
+ if (web != null) {
+ // Request focus on the top window.
+ if (mUseQuickControls) {
+ mPieControl.forceToTop(mContentView);
+ web.setTitleBar(null);
+ } else {
+ web.setTitleBar(mTitleBar);
+ mTitleBar.onScrollChanged();
+ }
+ }
mTitleBar.bringToFront();
tab.getTopWindow().requestFocus();
setShouldShowErrorConsole(tab, mUiController.shouldShowErrorConsole());
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 153533b..7db5563 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -29,17 +29,13 @@
import android.util.Log;
import android.util.TypedValue;
import android.view.ActionMode;
-import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.webkit.WebView;
-import android.webkit.WebViewClassic;
-import android.widget.FrameLayout;
import android.widget.ImageView;
import com.android.browser.UrlInputView.StateListener;
@@ -52,7 +48,6 @@
private static final String LOGTAG = "PhoneUi";
private static final int MSG_INIT_NAVSCREEN = 100;
- private PieControl mPieControl;
private NavScreen mNavScreen;
private AnimScreen mAnimScreen;
private NavigationBarPhone mNavigationBar;
@@ -264,21 +259,6 @@
}
@Override
- public void setUseQuickControls(boolean useQuickControls) {
- mUseQuickControls = useQuickControls;
- mTitleBar.setUseQuickControls(mUseQuickControls);
- if (useQuickControls) {
- mPieControl = new PieControl(mActivity, mUiController, this);
- mPieControl.attachToContainer(mContentView);
- } else {
- if (mPieControl != null) {
- mPieControl.removeFromContainer(mContentView);
- }
- }
- updateUrlBarAutoShowManagerTarget();
- }
-
- @Override
public boolean isWebShowing() {
return super.isWebShowing() && !showingNavScreen();
}
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 391b83e..e0a6be2 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -50,7 +50,6 @@
private NavigationBarTablet mNavBar;
- private PieControl mPieControl;
private Handler mHandler;
/**
@@ -82,27 +81,19 @@
@Override
public void setUseQuickControls(boolean useQuickControls) {
- mUseQuickControls = useQuickControls;
- mTitleBar.setUseQuickControls(mUseQuickControls);
- if (useQuickControls) {
- checkTabCount();
- mPieControl = new PieControl(mActivity, mUiController, this);
- mPieControl.attachToContainer(mContentView);
- } else {
- mActivity.getActionBar().show();
- if (mPieControl != null) {
- mPieControl.removeFromContainer(mContentView);
- }
+ super.setUseQuickControls(useQuickControls);
+ checkHideActionBar();
+ if (!useQuickControls) {
+ mActionBar.show();
}
mTabBar.setUseQuickControls(mUseQuickControls);
// We need to update the tabs with this change
for (Tab t : mTabControl.getTabs()) {
t.updateShouldCaptureThumbnails();
}
- updateUrlBarAutoShowManagerTarget();
}
- private void checkTabCount() {
+ private void checkHideActionBar() {
if (mUseQuickControls) {
mHandler.post(new Runnable() {
public void run() {
@@ -116,7 +107,7 @@
public void onResume() {
super.onResume();
mNavBar.clearCompletions();
- checkTabCount();
+ checkHideActionBar();
}
@Override
@@ -164,7 +155,7 @@
}
protected void onAddTabCompleted(Tab tab) {
- checkTabCount();
+ checkHideActionBar();
}
@Override
@@ -179,13 +170,6 @@
Log.e(LOGTAG, "active tab with no webview detected");
return;
}
- // Request focus on the top window.
- if (mUseQuickControls) {
- mPieControl.forceToTop(mContentView);
- view.setTitleBar(null);
- } else {
- view.setTitleBar(mTitleBar);
- }
mTabBar.onSetActiveTab(tab);
if (tab.isInVoiceSearchMode()) {
showVoiceTitleBar(tab.getVoiceDisplayTitle(), tab.getVoiceSearchResults());
@@ -199,7 +183,7 @@
@Override
public void updateTabs(List<Tab> tabs) {
mTabBar.updateTabs(tabs);
- checkTabCount();
+ checkHideActionBar();
}
@Override
@@ -212,7 +196,7 @@
}
protected void onRemoveTabCompleted(Tab tab) {
- checkTabCount();
+ checkHideActionBar();
}
int getContentWidth() {
@@ -256,7 +240,7 @@
@Override
public void onActionModeFinished(boolean inLoad) {
- checkTabCount();
+ checkHideActionBar();
if (inLoad) {
// the titlebar was removed when the CAB was shown
// if the page is loading, show it again
@@ -288,9 +272,7 @@
@Override
public void onHideCustomView() {
super.onHideCustomView();
- if (mUseQuickControls) {
- checkTabCount();
- }
+ checkHideActionBar();
}
@Override