diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index fbb5ad0..1ea1460 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -819,8 +819,8 @@
             } else {
                 mTitleBar.setEnabled(true);
             }
-
-            mTitleBar.setTranslationY(topControlsOffsetYPix);
+            if (!mTitleBar.isFixed() && !isLoading())
+                mTitleBar.setTranslationY(topControlsOffsetYPix);
         }
     }
 
@@ -898,10 +898,6 @@
 
     }
 
-    public void addFixedTitleBar(View view) {
-        mFixedTitlebarContainer.addView(view);
-    }
-
     public void setContentViewMarginTop(int margin) {
         LinearLayout.LayoutParams params =
                 (LinearLayout.LayoutParams) mContentView.getLayoutParams();
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 1ea4dad..5d5f1e3 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -102,13 +102,7 @@
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        if (mIsFixedTitleBar) {
-            int margin = getMeasuredHeight() - calculateEmbeddedHeight();
-            if (!isEditingUrl())
-                mBaseUi.setContentViewMarginTop(-margin);
-        } else {
-            mBaseUi.setContentViewMarginTop(0);
-        }
+        mBaseUi.setContentViewMarginTop(0);
     }
 
     private void setFixedTitleBar() {
@@ -125,12 +119,8 @@
         if (parent != null) {
             parent.removeView(this);
         }
-        if (mIsFixedTitleBar) {
-            mBaseUi.addFixedTitleBar(this);
-        } else {
-            mContentView.addView(this, makeLayoutParams());
-            mBaseUi.setContentViewMarginTop(0);
-        }
+        mContentView.addView(this, makeLayoutParams());
+        mBaseUi.setContentViewMarginTop(0);
     }
 
     public BaseUi getUi() {
@@ -168,7 +158,11 @@
         if (mSkipTitleBarAnimations) {
             this.setVisibility(View.VISIBLE);
             this.setTranslationY(0);
-            hideTopControls();
+            // reaffirm top-controls
+            if (isFixed() || isInLoad())
+                showTopControls();
+            else
+                enableTopControls();
         } else if (!bOldStyleAutoHideDisabled) {
             int visibleHeight = getVisibleTitleHeight();
             float startPos = (-getEmbeddedHeight() + visibleHeight);
@@ -283,7 +277,10 @@
             }
 
             //onPageFinished
-            enableTopControls();
+            if (isFixed())
+                showTopControls();
+            else
+                enableTopControls();
 
         } else {
             if (!mInLoad) {
