diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 6ae6f1b..b39cb43 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -38,6 +38,7 @@
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
 import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
 import android.webkit.WebChromeClient;
 import android.webkit.WebHistoryItem;
 import android.webkit.WebView;
@@ -70,6 +71,7 @@
     UiController mUiController;
     TabControl mTabControl;
     private Tab mActiveTab;
+    private InputMethodManager mInputManager;
 
     private Drawable mSecLockIcon;
     private Drawable mMixLockIcon;
@@ -107,6 +109,8 @@
         mUiController = controller;
         mTabControl = controller.getTabControl();
         Resources res = mActivity.getResources();
+        mInputManager = (InputMethodManager)
+                browser.getSystemService(Activity.INPUT_METHOD_SERVICE);
         mSecLockIcon = res.getDrawable(R.drawable.ic_secure);
         mMixLockIcon = res.getDrawable(R.drawable.ic_partial_secure);
 
@@ -583,6 +587,11 @@
                 extras);
         mTitleBar.setVisibility(View.GONE);
         hideFakeTitleBar();
+        dismissIME();
+        if (mActiveTab != null) {
+            WebView web = mActiveTab.getWebView();
+            mActiveTab.putInBackground();
+        }
         mContentView.addView(mComboView, COVER_SCREEN_PARAMS);
     }
 
@@ -596,6 +605,9 @@
             mTitleBar.setVisibility(View.VISIBLE);
             mComboView = null;
         }
+        if (mActiveTab != null) {
+            mActiveTab.putInForeground();
+        }
     }
 
     @Override
@@ -658,6 +670,13 @@
         mFakeTitleBar.setDisplayTitle(url);
     }
 
+    private void dismissIME() {
+        if (mInputManager.isActive()) {
+            mInputManager.hideSoftInputFromWindow(mContentView.getWindowToken(),
+                    0);
+        }
+    }
+
     // -------------------------------------------------------------------------
 
     @Override
@@ -745,8 +764,6 @@
 
     /**
      * Remove the active tabs page.
-     * @param needToAttach If true, the active tabs page did not attach a tab
-     *                     to the content view, so we need to do that here.
      */
     public void removeActiveTabsPage() {
         mContentView.removeView(mActiveTabsPage);
