diff --git a/res/layout/search_suggestion_item.xml b/res/layout/search_suggestion_item.xml
index 49b0256..2d6caab 100644
--- a/res/layout/search_suggestion_item.xml
+++ b/res/layout/search_suggestion_item.xml
@@ -18,30 +18,24 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/search_suggestion_height"
-    android:orientation="vertical">
+    android:layout_height="wrap_content"
+    android:paddingTop="@dimen/search_suggestion_padding"
+    android:paddingBottom="@dimen/search_suggestion_padding">
 
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="center_vertical"
-        android:paddingRight="16dp">
+    <ImageView
+        android:id="@+id/search_overlay_item_icon"
+        android:layout_width="@dimen/search_leading_button_width"
+        android:layout_height="wrap_content"
+        style="@style/SearchViewLeadingButton" />
 
-        <ImageView
-            android:id="@+id/search_overlay_item_icon"
-            android:layout_width="@dimen/search_leading_button_width"
-            android:layout_height="match_parent"
-            style="@style/SearchViewLeadingButton" />
-
-        <TextView
-            android:id="@+id/search_overlay_item_text"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:layout_weight="1"
-            android:textColor="@color/search_suggestion_item_text"
-            android:textSize="16sp" />
-
-    </LinearLayout>
+    <TextView
+        android:id="@+id/search_overlay_item_text"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:layout_weight="1"
+        android:textColor="@color/search_suggestion_item_text"
+        android:textSize="16sp"
+        style="@style/SearchSuggestionTextStyle" />
 
 </LinearLayout>
\ No newline at end of file
diff --git a/res/values-ldrtl/styles-ldrtl.xml b/res/values-ldrtl/styles-ldrtl.xml
index 69e86f8..54df227 100644
--- a/res/values-ldrtl/styles-ldrtl.xml
+++ b/res/values-ldrtl/styles-ldrtl.xml
@@ -384,12 +384,15 @@
     </style>
 
     <style name="SearchViewLeadingButton">
-        <item name="android:layout_gravity">center_vertical</item>
-        <item name="android:paddingStart">16dp</item>
-        <item name="android:paddingEnd">32dp</item>
+        <item name="android:paddingStart">@dimen/search_leading_button_padding_start</item>
+        <item name="android:paddingEnd">@dimen/search_leading_button_padding_end</item>
         <item name="android:scaleType">center</item>
     </style>
 
+    <style name="SearchSuggestionTextStyle">
+        <item name="android:paddingEnd">@dimen/search_suggestion_padding</item>
+    </style>
+
     <style name="AccountItemNameStyle">
         <item name="android:paddingStart">@dimen/account_item_name_start_padding</item>
         <item name="android:paddingEnd">@dimen/account_item_name_end_padding</item>
diff --git a/res/values-sw600dp-land/constants.xml b/res/values-sw600dp-land/constants.xml
index 7d9fb02..8b3aa15 100644
--- a/res/values-sw600dp-land/constants.xml
+++ b/res/values-sw600dp-land/constants.xml
@@ -15,8 +15,8 @@
      limitations under the License.
 -->
 <resources>
-    <!-- Whether the list is collapsible in conversation view mode -->
-    <bool name="list_collapsible">false</bool>
+    <!-- Whether we are in landscape mode on a tablet or not -->
+    <bool name="is_tablet_landscape">true</bool>
     <!-- Whether to show single or 2 pane search results -->
     <bool name="show_two_pane_search_results">true</bool>
 
diff --git a/res/values/constants.xml b/res/values/constants.xml
index a92445a..8b4817b 100644
--- a/res/values/constants.xml
+++ b/res/values/constants.xml
@@ -55,8 +55,8 @@
     <integer name="conversation_unstyled_font_size_px">13</integer>
     <integer name="conversation_webview_viewport_px">980</integer>
 
-    <!-- Whether the list is collapsible in conversation view mode -->
-    <bool name="list_collapsible">true</bool>
+    <!-- Whether we are in landscape mode on a tablet or not -->
+    <bool name="is_tablet_landscape">false</bool>
 
     <!-- Whether to show single or 2 pane search results -->
     <bool name="show_two_pane_search_results">false</bool>
diff --git a/res/values/dimen.xml b/res/values/dimen.xml
index 777b796..5720c71 100644
--- a/res/values/dimen.xml
+++ b/res/values/dimen.xml
@@ -150,8 +150,10 @@
     <dimen name="widget_attachment_padding_end">8dp</dimen>
 
     <dimen name="search_leading_button_width">72dp</dimen>
+    <dimen name="search_leading_button_padding_start">16dp</dimen>
+    <dimen name="search_leading_button_padding_end">32dp</dimen>
     <dimen name="search_ending_button_width">56dp</dimen>
-    <dimen name="search_suggestion_height">56dp</dimen>
+    <dimen name="search_suggestion_padding">16dp</dimen>
     <dimen name="search_results_padding">16dp</dimen>
     <dimen name="search_banner_text_size">12sp</dimen>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index c305241..484ec52 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -973,12 +973,15 @@
     </style>
 
     <style name="SearchViewLeadingButton">
-        <item name="android:layout_gravity">center_vertical</item>
-        <item name="android:paddingLeft">16dp</item>
-        <item name="android:paddingRight">32dp</item>
+        <item name="android:paddingLeft">@dimen/search_leading_button_padding_start</item>
+        <item name="android:paddingRight">@dimen/search_leading_button_padding_end</item>
         <item name="android:scaleType">center</item>
     </style>
 
+    <style name="SearchSuggestionTextStyle">
+        <item name="android:paddingRight">@dimen/search_suggestion_padding</item>
+    </style>
+
     <style name="AccountItemNameStyle">
         <item name="android:paddingLeft">@dimen/account_item_name_start_padding</item>
         <item name="android:paddingRight">@dimen/account_item_name_end_padding</item>
diff --git a/src/com/android/mail/browse/ConversationItemView.java b/src/com/android/mail/browse/ConversationItemView.java
index 507d808..aae00e2 100644
--- a/src/com/android/mail/browse/ConversationItemView.java
+++ b/src/com/android/mail/browse/ConversationItemView.java
@@ -444,7 +444,7 @@
         mContext = context.getApplicationContext();
         final Resources res = mContext.getResources();
         mTabletDevice = Utils.useTabletUI(res);
-        mListCollapsible = res.getBoolean(R.bool.list_collapsible);
+        mListCollapsible = !res.getBoolean(R.bool.is_tablet_landscape);
         mAccount = account;
 
         getItemViewResources(mContext);
diff --git a/src/com/android/mail/ui/ActionBarController.java b/src/com/android/mail/ui/ActionBarController.java
index 32b0032..cfa006e 100644
--- a/src/com/android/mail/ui/ActionBarController.java
+++ b/src/com/android/mail/ui/ActionBarController.java
@@ -181,6 +181,9 @@
 
     @Override
     public void onViewModeChanged(int newMode) {
+        final boolean mIsTabletLandscape =
+                mContext.getResources().getBoolean(R.bool.is_tablet_landscape);
+
         mActivity.supportInvalidateOptionsMenu();
         // Check if we are either on a phone, or in Conversation mode on tablet. For these, the
         // recent folders is enabled.
@@ -195,6 +198,13 @@
                 setEmptyMode();
                 break;
             case ViewMode.CONVERSATION:
+                // If on tablet landscape, show current folder instead of emptying the action bar
+                if (mIsTabletLandscape) {
+                    mActionBar.setDisplayHomeAsUpEnabled(true);
+                    showNavList();
+                    break;
+                }
+                // Otherwise, fall through to default behavior, shared with Ads ViewMode.
             case ViewMode.AD:
                 mActionBar.setDisplayHomeAsUpEnabled(true);
                 setEmptyMode();
diff --git a/src/com/android/mail/ui/MiniDrawerView.java b/src/com/android/mail/ui/MiniDrawerView.java
index 83c8f5d..0f0abe0 100644
--- a/src/com/android/mail/ui/MiniDrawerView.java
+++ b/src/com/android/mail/ui/MiniDrawerView.java
@@ -17,7 +17,6 @@
 package com.android.mail.ui;
 
 import android.content.Context;
-import android.support.annotation.LayoutRes;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -29,9 +28,6 @@
 import com.android.mail.content.ObjectCursor;
 import com.android.mail.providers.Account;
 import com.android.mail.providers.Folder;
-import com.google.common.collect.Lists;
-
-import java.util.List;
 
 /**
  * A smaller version of the account- and folder-switching drawer view for tablet UIs.
@@ -39,7 +35,6 @@
 public class MiniDrawerView extends LinearLayout {
 
     private FolderListFragment mController;
-    private final int mDrawWidth;
     // use the same dimen as AccountItemView to participate in recycling
     // TODO: but Material account switcher doesn't recycle...
     private final int mAvatarDecodeSize;
@@ -48,7 +43,6 @@
     private View mSpacer;
 
     private AccountItem mCurrentAccount;
-    private final List<AccountItem> mRecentAccounts = Lists.newArrayList();
 
     private final LayoutInflater mInflater;
 
@@ -61,7 +55,6 @@
     public MiniDrawerView(Context context, AttributeSet attrs) {
         super(context, attrs);
 
-        mDrawWidth = getResources().getDimensionPixelSize(R.dimen.two_pane_drawer_width_mini);
         mAvatarDecodeSize = getResources().getDimensionPixelSize(R.dimen.account_avatar_dimension);
 
         mInflater = LayoutInflater.from(context);
@@ -116,7 +109,7 @@
             if (count >= NUM_RECENT_ACCOUNTS) {
                 break;
             }
-            if (currentAccount.uri.equals(a.uri)) {
+            if (currentAccount != null && currentAccount.uri.equals(a.uri)) {
                 continue;
             }
             final ImageView iv = (ImageView) mInflater.inflate(
diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java
index 6e167f9..3238c02 100644
--- a/src/com/android/mail/ui/TwoPaneController.java
+++ b/src/com/android/mail/ui/TwoPaneController.java
@@ -161,7 +161,7 @@
         mLayout.setConversationListLayoutListener(mConversationListLayoutListener);
         mLayout.setController(this, Intent.ACTION_SEARCH.equals(mActivity.getIntent().getAction()));
         mActivity.getWindow().setBackgroundDrawable(null);
-        mIsTabletLandscape = !mActivity.getResources().getBoolean(R.bool.list_collapsible);
+        mIsTabletLandscape = mActivity.getResources().getBoolean(R.bool.is_tablet_landscape);
 
         final FolderListFragment flf = getFolderListFragment();
         flf.setMiniDrawerEnabled(true);
diff --git a/src/com/android/mail/ui/TwoPaneLayout.java b/src/com/android/mail/ui/TwoPaneLayout.java
index 571311f..1430898 100644
--- a/src/com/android/mail/ui/TwoPaneLayout.java
+++ b/src/com/android/mail/ui/TwoPaneLayout.java
@@ -118,7 +118,7 @@
         // The conversation list might be visible now, depending on the layout: in portrait we
         // don't show the conversation list, but in landscape we do.  This information is stored
         // in the constants
-        mListCollapsible = res.getBoolean(R.bool.list_collapsible);
+        mListCollapsible = !res.getBoolean(R.bool.is_tablet_landscape);
 
         mDrawerWidthMini = res.getDimensionPixelSize(R.dimen.two_pane_drawer_width_mini);
         mDrawerWidthOpen = res.getDimensionPixelSize(R.dimen.two_pane_drawer_width_open);
