diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 1c270be..adb9b7d 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -973,8 +973,10 @@
                     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                     PixelFormat.OPAQUE);
             params.gravity = Gravity.TOP;
-            params.windowAnimations = getTopWindow().getScrollY() == 0 ? 0
-                    : com.android.internal.R.style.Animation_DropDownDown;
+            WebView mainView = mTabControl.getCurrentWebView();
+            params.windowAnimations = mainView == null
+                    || mainView.getScrollY() != 0
+                    ? com.android.internal.R.style.Animation_DropDownDown : 0;
             // XXX : Without providing an offset, the fake title bar will be
             // placed underneath the status bar.  Use the global visible rect
             // of mBrowserFrameLayout to determine the bottom of the status bar
@@ -988,7 +990,14 @@
     @Override
     public void onOptionsMenuClosed(Menu menu) {
         mOptionsMenuOpen = false;
-        hideFakeTitleBar();
+        if (!mInLoad) {
+            hideFakeTitleBar();
+        } else if (!mIconView) {
+            // The page is currently loading, and we are in expanded mode, so
+            // we were not showing the menu.  Show it once again.  It will be
+            // removed when the page finishes.
+            showFakeTitleBar();
+        }
     }
     private void hideFakeTitleBar() {
         if (mFakeTitleBar == null) return;
@@ -2406,6 +2415,11 @@
             CookieSyncManager.getInstance().resetSync();
 
             mInLoad = true;
+            WebView currentWebView = mTabControl.getCurrentWebView();
+            if (currentWebView == null || currentWebView.getScrollY() != 0) {
+                // This page has begun to load, so show the title bar
+                showFakeTitleBar();
+            }
             updateInLoadMenuItems();
             if (!mIsNetworkUp) {
                 if ( mAlertDialog == null) {
@@ -3060,14 +3074,22 @@
                 if (mInLoad) {
                     mInLoad = false;
                     updateInLoadMenuItems();
+                    // If the options menu is open, leave the title bar
+                    if (!mOptionsMenuOpen || !mIconView) {
+                        hideFakeTitleBar();
+                    }
                 }
-            } else {
+            } else if (!mInLoad) {
                 // onPageFinished may have already been called but a subframe
                 // is still loading and updating the progress. Reset mInLoad
                 // and update the menu items.
-                if (!mInLoad) {
-                    mInLoad = true;
-                    updateInLoadMenuItems();
+                mInLoad = true;
+                updateInLoadMenuItems();
+                WebView currentWebView = mTabControl.getCurrentWebView();
+                if ((currentWebView == null || currentWebView.getScrollY() != 0)
+                        && (!mOptionsMenuOpen || mIconView)) {
+                    // This page has begun to load, so show the title bar
+                    showFakeTitleBar();
                 }
             }
         }
