Bug 940997: Reorganize primary controls in main menu. [r=mfinkle]
authorSriram Ramasubramanian <sriram@mozilla.com>
Wed, 18 Dec 2013 18:46:42 -0800
changeset 178213 0e84f8ba1333e284be097902ae9308ad3e82f597
parent 178212 e382a654c7638783c3e02b23f438a9cd6d408896
child 178214 63cac76f5f7fcc5be0f993d7f623b68cb017bde0
push id462
push userraliiev@mozilla.com
push dateTue, 22 Apr 2014 00:22:30 +0000
treeherdermozilla-release@ac5db8c74ac0 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmfinkle
bugs940997
milestone29.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 940997: Reorganize primary controls in main menu. [r=mfinkle]
mobile/android/base/BrowserApp.java
mobile/android/base/menu/GeckoMenu.java
mobile/android/base/menu/MenuItemActionBar.java
mobile/android/base/menu/MenuPopup.java
mobile/android/base/resources/drawable-hdpi-v11/ic_menu_back.png
mobile/android/base/resources/drawable-hdpi/ic_menu_share.png
mobile/android/base/resources/drawable-large-hdpi-v11/ic_menu_back.png
mobile/android/base/resources/drawable-large-mdpi-v11/ic_menu_back.png
mobile/android/base/resources/drawable-large-xhdpi-v11/ic_menu_back.png
mobile/android/base/resources/drawable-mdpi-v11/ic_menu_back.png
mobile/android/base/resources/drawable-mdpi/ic_menu_share.png
mobile/android/base/resources/drawable-xhdpi-v11/ic_menu_back.png
mobile/android/base/resources/drawable-xhdpi/ic_menu_share.png
mobile/android/base/resources/layout/menu_action_bar.xml
mobile/android/base/resources/layout/menu_item_action_view.xml
mobile/android/base/resources/layout/menu_popup.xml
mobile/android/base/resources/menu-large-v11/browser_app_menu.xml
mobile/android/base/resources/menu-v11/browser_app_menu.xml
mobile/android/base/resources/menu-xlarge-v11/browser_app_menu.xml
mobile/android/base/resources/menu/browser_app_menu.xml
mobile/android/base/resources/values-large-v11/styles.xml
mobile/android/base/resources/values-v11/themes.xml
mobile/android/base/resources/values/attrs.xml
mobile/android/base/resources/values/styles.xml
mobile/android/base/resources/values/themes.xml
mobile/android/base/widget/GeckoPopupMenu.java
--- a/mobile/android/base/BrowserApp.java
+++ b/mobile/android/base/BrowserApp.java
@@ -2048,43 +2048,46 @@ abstract public class BrowserApp extends
         if (aMenu == null)
             return false;
 
         if (!GeckoThread.checkLaunchState(GeckoThread.LaunchState.GeckoRunning))
             aMenu.findItem(R.id.settings).setEnabled(false);
 
         Tab tab = Tabs.getInstance().getSelectedTab();
         MenuItem bookmark = aMenu.findItem(R.id.bookmark);
+        MenuItem back = aMenu.findItem(R.id.back);
         MenuItem forward = aMenu.findItem(R.id.forward);
         MenuItem share = aMenu.findItem(R.id.share);
         MenuItem saveAsPDF = aMenu.findItem(R.id.save_as_pdf);
         MenuItem charEncoding = aMenu.findItem(R.id.char_encoding);
         MenuItem findInPage = aMenu.findItem(R.id.find_in_page);
         MenuItem desktopMode = aMenu.findItem(R.id.desktop_mode);
         MenuItem enterGuestMode = aMenu.findItem(R.id.new_guest_session);
         MenuItem exitGuestMode = aMenu.findItem(R.id.exit_guest_session);
 
         // Only show the "Quit" menu item on pre-ICS or television devices.
         // In ICS+, it's easy to kill an app through the task switcher.
         aMenu.findItem(R.id.quit).setVisible(Build.VERSION.SDK_INT < 14 || HardwareUtils.isTelevision());
 
         if (tab == null || tab.getURL() == null) {
             bookmark.setEnabled(false);
+            back.setEnabled(false);
             forward.setEnabled(false);
             share.setEnabled(false);
             saveAsPDF.setEnabled(false);
             findInPage.setEnabled(false);
             return true;
         }
 
         bookmark.setEnabled(!AboutPages.isAboutReader(tab.getURL()));
         bookmark.setCheckable(true);
         bookmark.setChecked(tab.isBookmark());
         bookmark.setIcon(tab.isBookmark() ? R.drawable.ic_menu_bookmark_remove : R.drawable.ic_menu_bookmark_add);
 
+        back.setEnabled(tab.canDoBack());
         forward.setEnabled(tab.canDoForward());
         desktopMode.setChecked(tab.getDesktopMode());
         desktopMode.setIcon(tab.getDesktopMode() ? R.drawable.ic_menu_desktop_mode_on : R.drawable.ic_menu_desktop_mode_off);
 
         String url = tab.getURL();
         if (AboutPages.isAboutReader(url)) {
             String urlFromReader = ReaderModeUtils.getUrlFromAboutReader(url);
             if (urlFromReader != null) {
@@ -2204,16 +2207,23 @@ abstract public class BrowserApp extends
 
         if (itemId == R.id.reload) {
             tab = Tabs.getInstance().getSelectedTab();
             if (tab != null)
                 tab.doReload();
             return true;
         }
 
+        if (itemId == R.id.back) {
+            tab = Tabs.getInstance().getSelectedTab();
+            if (tab != null)
+                tab.doBack();
+            return true;
+        }
+
         if (itemId == R.id.forward) {
             tab = Tabs.getInstance().getSelectedTab();
             if (tab != null)
                 tab.doForward();
             return true;
         }
 
         if (itemId == R.id.save_as_pdf) {
--- a/mobile/android/base/menu/GeckoMenu.java
+++ b/mobile/android/base/menu/GeckoMenu.java
@@ -93,17 +93,17 @@ public class GeckoMenu extends ListView
     // Adapter to hold the list of menu items.
     private MenuItemsAdapter mAdapter;
 
     public GeckoMenu(Context context) {
         this(context, null);
     }
 
     public GeckoMenu(Context context, AttributeSet attrs) {
-        this(context, attrs, android.R.attr.listViewStyle);
+        this(context, attrs, R.attr.geckoMenuListViewStyle);
     }
 
     public GeckoMenu(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
 
         setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                                          LayoutParams.FILL_PARENT));
 
@@ -493,29 +493,41 @@ public class GeckoMenu extends ListView
     public void setActionItemBarPresenter(ActionItemBarPresenter presenter) {
         mActionItemBarPresenter = presenter;
     }
 
     // Action Items are added to the header view by default.
     // URL bar can register itself as a presenter, in case it has a different place to show them.
     public static class DefaultActionItemBar extends LinearLayout
                                              implements ActionItemBarPresenter {
+        private final int mRowHeight;
+
         public DefaultActionItemBar(Context context) {
             this(context, null);
         }
 
         public DefaultActionItemBar(Context context, AttributeSet attrs) {
             super(context, attrs);
 
+            mRowHeight = getResources().getDimensionPixelSize(R.dimen.menu_item_row_height);
             setWeightSum(3.0f);
         }
 
         @Override
         public boolean addActionItem(View actionItem) {
-            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(actionItem.getLayoutParams());
+            ViewGroup.LayoutParams actualParams = actionItem.getLayoutParams();
+            LinearLayout.LayoutParams params;
+
+            if (actualParams != null) {
+                params = new LinearLayout.LayoutParams(actionItem.getLayoutParams());
+                params.width = 0;
+            } else {
+                params = new LinearLayout.LayoutParams(0, mRowHeight);
+            }
+
             params.weight = 1.0f;
             actionItem.setLayoutParams(params);
             addView(actionItem);
             return true;
         }
 
         @Override
         public void removeActionItem(View actionItem) {
--- a/mobile/android/base/menu/MenuItemActionBar.java
+++ b/mobile/android/base/menu/MenuItemActionBar.java
@@ -21,19 +21,16 @@ public class MenuItemActionBar extends I
     }
 
     public MenuItemActionBar(Context context, AttributeSet attrs) {
         this(context, attrs, R.attr.menuItemActionBarStyle);
     }
 
     public MenuItemActionBar(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
-
-        int size = (int) (context.getResources().getDimension(R.dimen.browser_toolbar_height));
-        setLayoutParams(new ViewGroup.LayoutParams(size, size));
     }
 
     @Override
     public void initialize(GeckoMenuItem item) {
         if (item == null)
             return;
 
         setIcon(item.getIcon());
--- a/mobile/android/base/menu/MenuPopup.java
+++ b/mobile/android/base/menu/MenuPopup.java
@@ -3,115 +3,66 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 package org.mozilla.gecko.menu;
 
 import org.mozilla.gecko.R;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.graphics.Color;
 import android.graphics.drawable.ColorDrawable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.PopupWindow;
-import android.widget.RelativeLayout;
-import android.widget.RelativeLayout.LayoutParams;
 
 /**
- * A popup to show the inflated MenuPanel. This has an arrow pointing to the anchor.
+ * A popup to show the inflated MenuPanel.
  */
 public class MenuPopup extends PopupWindow {
-    private Resources mResources;
-
-    private ImageView mArrowTop;
-    private ImageView mArrowBottom;
-    private RelativeLayout mPanel;
+    private LinearLayout mPanel;
 
     private int mYOffset;
-    private int mArrowMargin;
     private int mPopupWidth;
-    private boolean mShowArrow;
 
     public MenuPopup(Context context) {
         super(context);
-        mResources = context.getResources();
 
         setFocusable(true);
 
-        mYOffset = mResources.getDimensionPixelSize(R.dimen.menu_popup_offset);
-        mArrowMargin = mResources.getDimensionPixelSize(R.dimen.menu_popup_arrow_margin);
-        mPopupWidth = mResources.getDimensionPixelSize(R.dimen.menu_popup_width);
+        mYOffset = context.getResources().getDimensionPixelSize(R.dimen.menu_popup_offset);
+        mPopupWidth = context.getResources().getDimensionPixelSize(R.dimen.menu_popup_width);
 
         // Setting a null background makes the popup to not close on touching outside.
         setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
         setWindowLayoutMode(View.MeasureSpec.makeMeasureSpec(mPopupWidth, View.MeasureSpec.AT_MOST),
                             ViewGroup.LayoutParams.WRAP_CONTENT);
 
         LayoutInflater inflater = LayoutInflater.from(context);
-        RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.menu_popup, null);
-        setContentView(layout);
+        mPanel = (LinearLayout) inflater.inflate(R.layout.menu_popup, null);
+        setContentView(mPanel);
 
-        mArrowTop = (ImageView) layout.findViewById(R.id.menu_arrow_top);
-        mArrowBottom = (ImageView) layout.findViewById(R.id.menu_arrow_bottom);
-        mPanel = (RelativeLayout) layout.findViewById(R.id.menu_panel);
-        mShowArrow = true;
         setAnimationStyle(R.style.PopupAnimation);
     }
 
     /**
      * Adds the panel with the menu to its content.
      *
      * @param view The panel view with the menu to be shown.
      */
     public void setPanelView(View view) {
+        view.setLayoutParams(new LinearLayout.LayoutParams(mPopupWidth,
+                                                           LinearLayout.LayoutParams.WRAP_CONTENT));
+
         mPanel.removeAllViews();
         mPanel.addView(view);
-        mPanel.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
     }
 
     /**
-     * Show/hide the arrow pointing to the anchor.
-     *
-     * @param show Show/hide the arrow.
-     */
-    public void showArrowToAnchor(boolean show) {
-        mShowArrow = show;
-    }
-
-    /**
-     * A small little offset for the arrow to overlap the anchor.
+     * A small little offset.
      */
     @Override
     public void showAsDropDown(View anchor) {
-        if (!mShowArrow) {
-            mArrowTop.setVisibility(View.GONE);
-            mArrowBottom.setVisibility(View.GONE);
-            showAsDropDown(anchor, 0, -mYOffset);
-            return;
-        }
-
-        int[] anchorLocation = new int[2];
-        anchor.getLocationOnScreen(anchorLocation);
-
-        int screenWidth = mResources.getDisplayMetrics().widthPixels;
-        int arrowWidth = mResources.getDimensionPixelSize(R.dimen.menu_popup_arrow_width);
-        int arrowOffset = (anchor.getWidth() - arrowWidth)/2;
-
-        if (anchorLocation[0] + mPopupWidth <= screenWidth) {
-            // left align
-            ((LayoutParams) mArrowTop.getLayoutParams()).rightMargin = mPopupWidth - anchor.getWidth() + arrowOffset;
-            ((LayoutParams) mArrowBottom.getLayoutParams()).rightMargin = mPopupWidth - anchor.getWidth() + arrowOffset;
-        } else {
-            // right align
-            ((LayoutParams) mArrowTop.getLayoutParams()).rightMargin = screenWidth - anchorLocation[0] - anchor.getWidth()/2 - arrowWidth/2;
-            ((LayoutParams) mArrowBottom.getLayoutParams()).rightMargin = mArrowMargin;
-        }
-
-        // shown below anchor
-        mArrowTop.setVisibility(View.VISIBLE);
-        mArrowBottom.setVisibility(View.GONE);
         showAsDropDown(anchor, 0, -mYOffset);
     }
 }
index d7303f4d15fe613fb88324fb0b5a256fc083b3f0..875f595442801d901f9545ab04c66535682241c9
GIT binary patch
literal 1580
zc$}S7eM}Q)7(Xmjt%}Z%q_9cO(-BeI`)Et=&Q>UGk!BPTDxjOpqdn*i+PmEywlIT;
zRAzK>^8=S@T%B_>N|2b%`fX*KpW8HUqRyFh%uOARv7n$~x?LG{A2I&1H@SPC=e^(W
zd7k(AxYhZ2bH^x>6#xK?vE^6_q&*}0jF3z3;+MyLCv8chwL~mr%S9i>(}2mvmeHWi
zLsifPH07#!^$cwQ0GXR{l!ztvT++#U)KnCs_Io%Wx(pe9j&fGgB3MROFkU0{>*3=N
z$heG9vCfXzIWz5Ma%y?Hur|-(tgUnsE+}ITXz-Jg0S_%wpx;yF6-d7k8njDFa`YI6
zz(I&uX@vd?s>GfTnpvI(b!wf;iJ)3gPpDBHs>RV+AcmkC7}3C}MulP|LXfBq99od%
zjdzuk1(xg~Uy^2o+@i>lFzoaB)IN=x<tt#6AP5-2U<^}92$fLd6)C^UD@=`9u+V~&
zXE>2zy<k+Q%Gher2tlzccsRTLv0<+;lqe}>u%F^!RE@wM4;(`aVgX(LbhO~8;b^#k
z7T9XuDb=HV>OWjPof-v7(U9|aMk)$bWnrDw9@;C~EJjHBqINMZG8@-tqo`hs=rJT6
zM^PNXHQ8AhVIs^{4AY=78&Bez&4?byO?sWlq(@P!h9IozIAS$hi1cie6}7~;Hm@L3
zUMC&nGJkW^pUNf8JWYu#?_k-gSO?_0S&<doEC-qk)4}O>%E@@62Wim)4aG|H%u?Ew
z&9feGFvBGCga{BVj{NK97-q`SN;+mmtb|Sv4RKxnCu^`24E&#Vi5*Ej7!@Bkzoa}K
zAKEL;3@;7G>%JAa05EKk&0=!+zqzx;_<{^op4!`_=!^_>PWK+`ikt%zi`v%gxOF4a
z*?Bq5-ITRGvU|y<851XME=tH~%<CxnXcu^Iq#>|l;+7lhzkPo5@JG*mvAFg3N49N0
zt*>k;-8*~!n9HlV68|Xnd(|@6d*+TeeEogb7GopMHWZnNf&|Aizg@rWz`j<^3&W<a
zp!z~;UAN}wwXsuf<rY3LH1}^&%nSFb!bjzA_8LDp5t8*Mx6$JbD*x2FkH73woxHF8
z@m?tCoUmxy@MW^QJ7*i<`%N8JQ&RDkh<^8ponhI1WVk;|cYyQ9pYH<H6HE0Rl~KJl
z;##}>m4}X-Nk0^lD+apz$dv;PH-Y1c6L4Q>ZqLjM(`0@qH}aB-Rp7!op?-r>W=!j>
zkx#Bq3A76h8<g{}yuBkh+MQJr>W@pYtX-4RyU-rqIqk@#Q{i9$wj|XxrLSBC9t*U8
zSa_xwZ(+*9BYz2?&3X;kH8!$wY4bkC!hkXU=*(fu<0hM&ml{8LZ8W%Uuds1JH@B*I
z!KJ$w`+km`r14KpV>d2nHdO>m7f;ysmi)k+Lq$m&g8L=mRL8STaR=L!5k-!=MLsL=
z88Br}C`Hy?jb&cBs7oGKp^X@FWR2cMoU%>%eq4KK556jMi9F}(u6WrDQV9xc4pEt_
zPt=dvBtKn8Y;PdyJL(he#9dDf_bM}M!~4^E407?E`19*!rys0kdJ^Y+^+!eK$n%$T
z8~c;<t7gDu2lrXm1xpRBWr=vg!wA|seyip4M~Bb0zc^UwBY{v)>dAKj88A?H_{eP=
RIz9UTwpsHmtyxPN{si6<LRtU-
index 9243ec26f1c781a43a46c977ac05c6cb804dadd4..9b0ddd5c94b8524b594c81c116d8aeda89c576cf
GIT binary patch
literal 2022
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
SQXRHf|GZ+6RM;Gnkn=A+*fzKT
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d7303f4d15fe613fb88324fb0b5a256fc083b3f0
GIT binary patch
literal 393
zc$@)=0e1e0P)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ0003{Nkl<Zc-qa^
zKT1PE5P<O&8xe!|h(|Drh)Bd6h+tu3YrrO`AR;1SAtEBdOXv{{co~am5{%XQbt4OT
zv%$=)#n(Q5@OJi3h%rvw-u^+_A@%5mY7{D}{Pr|JZHm9@(qbvl2}MeKqj_)88O4fr
zJwfLR=9`vmL4vu+z--&DA;DZKm=SH+PMKh?6wDVjDcFGobFE;8v`N7ZB$%5F%mxJ;
zkU(bWHUqOx!44#ty9~@41v`*n?iI{{Rw>wl1oNO^`m{p94kVaI1@l1-3U(mDbSM^R
zL`Mlorm0Ya6!cE9WGSd$8uZ_O*)Rpo(o?}j-5xjgos6+xwjTRQ_o7c~Sc05)YaQf#
zp6MXx6JG~8--&dP^Q}<_Ip3>wkn_t!2RXmZbdc5SweAVZdEf8&f{0GXV7fHt3zCi#
n%q!Kr*HBuEdh|>Sf0?o$dCM7<*(vCP00000NkvXXu0mjfmG7)8
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f7f1efd5fa7c520509f3635f2a474c1a5572bc30
GIT binary patch
literal 278
zc$@(i0qOpUP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0002pNkl<Zc-pnp
zyADA?5P;!*Fqeq9w4zdoLZd?vM1+X9(rCSm#y!ONC5n?t)+IBFuQ+E<<}dc_1`&yB
zG+WvNC)5!>dCvGHu!OwaQ1c8dAj-xoFo!5Rq^yD1@IBJzJ>Y{GL^&XXU<$A}jSSBs
zm;x+JEW>r++u=C`Q-Bxa$nZRZDZoP?;%uD^93kG4fy=)GZQPv$E4|4bh;l~Ry2;5%
z*Dn%3Xg!E>LdhfW?zcUnXbI@ZAad}EmVk~7Bawnv;N2CH^9jTw8_$5gX|Jew1hf&h
csD8T#51b%XljBup%>V!Z07*qoM6N<$f;rc9{{R30
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5fdbb94caced464ff8de1c51ab3b81a566e1f355
GIT binary patch
literal 593
zc$@)I0<QguP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm0006QNkl<Zc-qz4
zO-oc^6u|N418AeA<r|YurD;_3hJv_gp$NHX5fu~|=%UZi%4N{E=pzJufT)Nlq$W*8
zY*fZ6n}}X0m2@8ew2;9gF-Mbg?&7zY-TA}4&wZYIC&U>48Xmd3ACBS)*6;`i5g;%F
z^!78L4LQUz<ETqQz;P@h?%*vBdk*M89`PS0QR6Y769vQyjCl(<g-?hTdf+MGEIuoS
zFQC~=z<GR844+54mz($^zAA=az%eh&Xb-+AhR>nR%Y&>J-xb5pA&uZ6pbtM4!_S}v
z!9&1h{89`*g(d_K0Rzh6C((f5Az%<Iis7?jzhf9Mgf+$RV#jG2a8)_{Yq94y47jEo
z{v~P<JOtdtx?=d}NFjI#xUC%iDXI}X1l$qB`%^*|m$nCtVgoTDvReWCxP=m8f|SYw
z3W!Nl9*|FZz;&!A^%B~;4-yvfPAsFifj@}O&7wyH>~ah73bob`vb}EN#&O6`0B{AX
ziikI;w+)a6@mmowfg`p7Qor&j`5uk70ee5pPovp3K<dK}<x-cn4Ul@3Z{t3o)iyxt
zRz}PtV;dk{P`=b%#0lE~=^ToRh$VE`21sX=A2vRs(>6frQhr)m#%bFC>7?>hS474(
zKx$W>?C#qKNEs|t7;w)=fYgdy1!stqp8zS1Im8{jKq?7;_GrNjVwq<+V7H9wHQ_Oe
fc!;Y1{UF-}dTu_Vjxwg*00000NkvXXu0mjf<W2(y
index f7f1efd5fa7c520509f3635f2a474c1a5572bc30..d8abcf3c01e46c330d70d6c96adbfc477b45bd23
GIT binary patch
literal 1337
zc%17D@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+9BuiW)N`mv#O3D+9QW+dm@{>{(
zJaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtBi9%9p
zdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tbhjOrj{fs
zROII56<bx<DuK<l0<uBE`br95B_-LmN)Sgy_y#CA=NF|anChA8CL0)<D41L78JZfJ
zSQzRk7#SEE>l+yB8yf2x8d(`wS{a%uK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh
zUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6%mkOz;^d;tf|AVqJOvOxF)6>a
z#8ycO=7rn>UthSvdBxCx0tT6WMPh-zp`L+$ZmvE|b#X~hY8rmk#UYgisro^w#rdU0
z$-wwXQ%151zgCb!plhuBi!y<cl9=O?pIn-onpfiKVygs{(M!opv2wF8cQZ6JH!(0b
zGBC3+G_)|VFm`h?vUId`b~Q3GHiVghRj-MYi-n<qfvKaTxuKz}v8AP}nT3I?vx}vf
zo1?3t3rw$PUU5lcUUDi-ZzfEyftwp%y;jaesfi`|MIrh5Ij|HEkda@KU!0L&px_*A
zrl8@Qn4Fmh63_%i5Y(-yMVV!(DQ-pixeDMAw#vlf0s|8Z0~DVd896$c0Qp9)2CkN-
z=1Ne#DddEjKF~4xXvqa81Wbb<COq*2Iq>Y0ng`4?MZnB4f5uWh1_s7-PZ!6Kid%1P
z?DaboAi`d7%fjH)><K$gEqnja;RlCXkJ^!b17S7|#wI?#JR251zIATG^A1~V3jA-n
zoip>&z02KupPPJB`Om8NB>dD~+wWHU-cSD&kf*60>hNFpi^5y>bFbbm*)E&XvPFP@
zXFp#>UDXEWs|w;=l2>Gd+}5ey{iR{FM*E2ymkFQbwT&z*_<pwDDRS045u9?CbE%U3
zjcMwwJlAF{(@n|JxE8?miREWXwNatc$$&f+PA$fjtzM4*&OO+{7q2Kkv27{aOI}{@
zvrojo>L_jPzon94tl#_j&ZeX0t>1K#wx76^Vf5B#g=UeQ@sns<z56SbF7w^LT9a8I
zDt<yI&4V>k(f!SA>(;kL$+3^#CLQ0U`7e6SjgVer!QYcuuPr%zJ&}L&fmwO3Ym&d;
zyc4)Fl=F5fSDC_72B-GgsU=H<la^1se*DCQ?A>!(_PUsPu+LQZd&asZGjxuH_ywk4
d?q8J;Fl6?Xd=1(XbQx5bdAj<!taD0e0st?v(#QY+
index 8364e3e58e389840c2b4d74a68df83092dfa9e7a..d1629261837d078ca2212f14a36591d63958328e
GIT binary patch
literal 1658
zc$}S8Yfuwc6pmUuGzBeaEjmSaR;r>V`v`&T7Gy#;QN&OlX^F(Cgv|mWBpWu11a!1i
z5RrjuEw-XIMn_6j1a+jKf)EA-2egVWY<xRaBP~{@2w1fnOYCDDfAr4m-h0k|-#O==
z$82$I%t9ajG(L~V^NCtS#B=*x_v7^@_ik(L)NtEWR<33f=u|dG%TPS2j!vO~D5Exw
zil?-?+^kM2jK>?7u2-p9wQ>ng(ng`yjS*UnW}bV6MOe*R(m=653YDfeg@gUaPJn=3
z7Y-(hm9Ww*qtf+@@)#;1FGfY?8AwbAMl1lrtT<=DNU>VLYRoiQaBDdD!Y<C8-D(H~
zUO-qwIQUmkYGo`SqZtYi3&jEwMuLG*Oo)h)U<ooGKw(4#!6FC|2@n*AF&q&CqYLD`
zF}hSdo=}YX;-qjeon_591m)!92y;Y2nn{BY48tH8g-}$$Aq19O6RWifOqQ7*3j}2$
z8NHd+(<Z<zYg6cKHXH;!S1_8D%9n;smeE9UDTAz9GlU3X$Y_K-XbT%prM@0*QRSK`
zD4w#=*$m0mBX#CKT)m#^26EBhA2E8aDB4VdCbNx{iH#z{LGFuCr`O>MNvHxrLWAK@
z6b_Lfhy<316p<(<#bk066(JrQuj0yNaHvFrDa2A~D1yjE7$y&qz;YRZg(#$Qgz#{q
zOcqvaA}J47|2J3uS}rbQC@o7fDw@vpbU<u6&C-^1+6>4NLV!6+EvYxT6+!L-jmAnb
z`W2K;!O%wFMTT+xD<Xh{CGfv)j-t}YU`|HmupASIf}>pB|H&G}1q1!3T|6qT2i?b)
z&Cdxh$A>a;GsAGhky$?PK94uHDvFS*tXKNBYSt^`{7;^ly16rOkJTK#iP)T#yRqd?
z%Q#<f&sRSZo99d<m@k6Dk~c8LgkOWsd*b5vMb?doc(KX1auI)PYD(Gl#5G5L>h4WD
zi>>TFKkRyZXz+)@k^aU@ORqnF5ZH5{-8Gwt+f_tJ(+}*Hgw-D3i`yQQJ8(6B_l*yo
zg-;)L_{G>HuBW9F3KUiO=$!m9wO-S99zC{dL=^k&%_OL*kbgaLcJu!E*sK*Lw7n-_
zpmJ!6>uAgjTcok{Sy@B(>5~a%<b=NBA>YE=RwsRaP{(%#p7U-K5BVZ@=WgE+ea~7y
z=5caGyU7u#e#iP*@~X8vYW-K=ebS>T@2zfow%~Zct!*+##ZJF<tzJXl9~@jGwA&2>
zEcry-R1p1e)<)4AbuFiw8!NJ>Uz9taR1ZB*s__@ZQTE>&=jMMR4{=m9Z+gV9Yt6ma
zbu1`O+2kV=-J#1n{7R3w4%-UKE;}b33|iZf{7pwq?ZgR&nl{70`oc2HB?o3}&#k@f
zlr{xCTX?dex~cHftnHe8PnWr(s{$hW4|f^9K3jEmIOEsjInKz4)+OopZzUC-x(Z8p
z#w+_4-q@OF-&J3b6qb0kZuQSQmzD0=K_(YXPhGqCE;2NJ=FRzG`3+gqk~Dvy`-?ty
zO<rEaENIT~fBQYvruLTX`WZL-ektkttTW%?8@>Gb*ex9&TrgzrU8ZWxt1OuAXusAH
zVD+-8@=9*^MQ+n=nfJRwklIQPcdrv(V<L>-m1I0j5uXlv>rms!<S*eFBZ@BM#8F4$
z8QrWru#f4gdDQF7KGj@LH1x0Ny<n>wo>IYdt-PVBdN*IQlsT7C-N-+puABt)T&#7R
zyBtuE)LR{!b_FB{<fiTot@f(UPKV8BynVdAp*Ui!H?L)Tv3EgPA?yAdM9E`_1Chy}
F{|T)Rl2QNw
index 5fdbb94caced464ff8de1c51ab3b81a566e1f355..ec94f06a074eb329686fa45e47ce3a682ac9cb49
GIT binary patch
literal 1702
zc$}S8c~BE)6ko-l5-lDa!Z2mK9D+*r2qA|F5R;%N!5BhIwN`U%AV7A*W^ID44h7T(
zyr#mCs<jXXjB&);4s}G3f)<okiv?S0EA4c|D%k2cMJv$SjV0E09RKJyv+w)f``+)p
z_q}7*p~_r7J0Ls&0D#%)E97cs*Lc4f{tS&MnA5>*VYDKL&LWMpO-tc`)IjQRFx{-p
z#nrghP+W8Y7XyG_o=KBK=O{BodeY3%dUZH<vjy-jaf;od)feD2sKawjgao>Cx*Y;d
z1_|^EPl+fkGCa?;Vl#zjZO+u_Hy7xI1}G&N6x&6N0W(f(LA$w-u!`&w=&@Z9bM}g1
z2z;zU7f7JLgUV5=Kp9ElAdkaK&?9If$QN=@9-1gXmw*_8a$$rEquc}(6Cpwo$^$1C
z#CW3&Mv+>cHtCDuBv2krTSPEyv)MQ{E{CLYVN@s-!UzUqSOTMwU@azStv!LTM)@qr
zajTv(S!feUfL>m!BRA0!2=YC_Y*8wo7$&TfiDFU)+qD)L<sh)x4EwaLv>G=)U)!oF
zw&1WDx00JEJyQ>3)KjjW5A`ZC(TG-4CZ;IbLOH45WX1_PT`qx`8;-$b5TyzDX(-B1
zMEDqzBtTICBH*Si!-P_yOo3rs)Mw*aSeXpr3j|UwPb%f3sDdjLDv|_<LM9g`rAZa2
z+=opkthAQU<36nEA1wA<tVl-TTAHLZBw6U|0977Ilh!=a0?M+Iz&NE=Zz8;ccyECw
zW5p@c8@M5jBF*6A42w+9hyY0xApd$fhDnztGCZb06ha;!n#3CZPu5^282CT!;uA4F
z=siAZeujB6J~+Y548;tGZe`aH08H&qmrFJFZ*PB}vN}k*!2fRBXI}-T#>6H?$4+ZM
zI}o<Zv1`ipUYU?xx}l?|tIKk*C%6U-sN;o%?484ApMav1%GJ@+j$iKNb}udB7w+BL
zcEDyFd~eI(^$WqF=YJ(h+n<BgE!T+hpN`H;of4obaREMZqiJPx<2c;3hEUy)Usd%(
z+eFdPfe)!eq2g0_hx1#{N8DM`knxc7OR7E)$&DM$3VpN)FT-Z^4x*v`^|y9D*dF8R
zI;5*mR0oX3O*e*&mQ`6D+jL2k&iEz}1q^j$j0C1WMELPb0m+da;m!?l{P^`Hhc=$+
z|FkvJRA2q`*$KziyjmwmdRTUjW_geeqmENCVSOw&$M`DNXzu+HJ@)p?p62|y$gz@G
z=W*E<<60KpDXtKEu7WqpT-tCyB@#M*Zen<G<6M>h7atvW-mX=28(6Fx?Ye=Rsm=$t
z8U_|NdU#Uj>EYMbUhJxyukz1uG%pW}>Hp-)x@1*Gc1^tPShCEoD`Vtco~pC8;WAL%
zcjoFud9q{TYUq&i<Spo?U0NgUW_#}Eb67;*3ICOUeBAyU7AzR%AHCK%Yxn?wro`0q
z7e+Nq8Cn(g&4OxiWqDyk-I%m^b)<9md{wNbc~HZ3<d3XkqkSEo@7i5O<0H3Q*{<s8
z9#e0Y`*Vc?k4%nr@7wQYpK*nU?cvs5`n@8*u(aOoPRreixyj1X{I>!)(ze5nwGUWV
zdJe|=<zEcd9N2emTWYgp<VCTk65km#y8az^)7RUAhRb7zTjiP>wz<W<C&tzC`l(qj
zWOu496)mo}$0BMU)$cB-y|iXK(6hrsJX{P6$+FkIbQ0((8>^%i&bt>(9vR=K?!OY@
zJQ+WdS9Py$_xol0bz9{rn#k<v#zm1^$2p2?jqWW+rdJ)V`f^@iNQ!Nys$^;q>uEBU
c-92>{VC_LvA8c37^!_>06`As;WgAQX0`Gi%)Bpeg
index bc07fde8b9590b633276ba233b43c15536c62d4d..63b67e1eec22d63149247be38a655094d434047d
GIT binary patch
literal 2429
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
J>-}PK{{a4t`ZE9k
--- a/mobile/android/base/resources/layout/menu_action_bar.xml
+++ b/mobile/android/base/resources/layout/menu_action_bar.xml
@@ -7,11 +7,9 @@
      Note: This layout is intended to be used only above 11+.
      android:showDividers are available only 11+
 -->
 <view xmlns:android="http://schemas.android.com/apk/res/android"
       class="org.mozilla.gecko.menu.GeckoMenu$DefaultActionItemBar"
       android:layout_width="@dimen/menu_item_row_width"
       android:layout_height="@dimen/browser_toolbar_height"
       android:orientation="horizontal"
-      android:divider="@drawable/divider_vertical"
-      android:showDividers="middle"
-      android:dividerPadding="0dip"/>
+      android:background="#FFD6DEE4"/>
--- a/mobile/android/base/resources/layout/menu_item_action_view.xml
+++ b/mobile/android/base/resources/layout/menu_item_action_view.xml
@@ -13,15 +13,15 @@
             android:background="@drawable/action_bar_button"
             android:clickable="true"
             android:focusable="true"/>
 
     <ImageButton android:id="@+id/menu_item_button"
                  android:layout_width="0dip"
                  android:layout_height="@dimen/menu_item_row_height"
                  android:layout_weight="1.0"
-                 android:padding="10dip"
+                 android:padding="8dip"
                  android:scaleType="centerInside"
                  android:background="@drawable/action_bar_button"
                  android:layout_gravity="center_vertical"
                  android:visibility="gone"/>
 
 </merge>
--- a/mobile/android/base/resources/layout/menu_popup.xml
+++ b/mobile/android/base/resources/layout/menu_popup.xml
@@ -1,37 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content">
-
-    <RelativeLayout android:id="@+id/menu_panel"
-                    android:layout_width="@dimen/menu_popup_width"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:background="@drawable/menu_popup_bg">
-
-        <!-- MenuPanel will be added here dynamically -->
-
-    </RelativeLayout>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:id="@+id/menu_panel"
+              android:layout_width="@dimen/menu_popup_width"
+              android:layout_height="wrap_content"
+              android:layout_alignParentRight="true"
+              android:minWidth="@dimen/menu_popup_width"
+              android:background="@drawable/menu_popup_bg">
 
-    <ImageView android:id="@+id/menu_arrow_top"
-               android:layout_width="@dimen/menu_popup_arrow_width"
-               android:layout_height="12dip"
-               android:layout_marginRight="@dimen/menu_popup_arrow_margin"
-               android:layout_alignRight="@id/menu_panel"
-               android:src="@drawable/menu_popup_arrow_top"
-               android:scaleType="fitXY"/>
+    <!-- MenuPanel will be added here dynamically -->
 
-    <ImageView android:id="@+id/menu_arrow_bottom"
-               android:layout_width="@dimen/menu_popup_arrow_width"
-               android:layout_height="12dip"
-               android:layout_marginRight="@dimen/menu_popup_arrow_margin"
-               android:layout_alignRight="@id/menu_panel"
-               android:layout_alignBottom="@id/menu_panel"
-               android:src="@drawable/menu_popup_arrow_bottom"
-               android:scaleType="fitXY"/>
-
-</RelativeLayout>
+</LinearLayout>
--- a/mobile/android/base/resources/menu-large-v11/browser_app_menu.xml
+++ b/mobile/android/base/resources/menu-large-v11/browser_app_menu.xml
@@ -5,29 +5,34 @@
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item android:id="@+id/reload"
           android:icon="@drawable/ic_menu_reload"
           android:title="@string/reload"
           android:showAsAction="always"/>
 
+    <item android:id="@+id/back"
+          android:icon="@drawable/ic_menu_back"
+          android:title="@string/back"
+          android:visible="false"/>
+
     <item android:id="@+id/forward"
           android:icon="@drawable/ic_menu_forward"
           android:title="@string/forward"
           android:visible="false"/>
 
+    <item android:id="@+id/share"
+          android:icon="@drawable/ic_menu_share"
+          android:title="@string/share" />
+
     <item android:id="@+id/bookmark"
           android:icon="@drawable/ic_menu_bookmark_add"
           android:title="@string/bookmark"/>
 
-    <item android:id="@+id/share"
-          android:icon="@drawable/ic_menu_share"
-          android:title="@string/share" />
-
     <item android:id="@+id/new_tab"
           android:icon="@drawable/ic_menu_new_tab"
           android:title="@string/new_tab"/>
 
     <item android:id="@+id/new_private_tab"
           android:icon="@drawable/ic_menu_new_private_tab"
           android:title="@string/new_private_tab"/>
 
--- a/mobile/android/base/resources/menu-v11/browser_app_menu.xml
+++ b/mobile/android/base/resources/menu-v11/browser_app_menu.xml
@@ -1,34 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 
+    <item android:id="@+id/back"
+          android:icon="@drawable/ic_menu_back"
+          android:title="@string/back"
+          android:showAsAction="always"/>
+
     <item android:id="@+id/forward"
           android:icon="@drawable/ic_menu_forward"
           android:title="@string/forward"
           android:showAsAction="always"/>
 
     <item android:id="@+id/reload"
           android:icon="@drawable/ic_menu_reload"
           android:title="@string/reload"
           android:showAsAction="always"/>
 
-    <item android:id="@+id/bookmark"
-          android:icon="@drawable/ic_menu_bookmark_add"
-          android:title="@string/bookmark"
-          android:showAsAction="always"/>
-
     <item android:id="@+id/share"
           android:icon="@drawable/ic_menu_share"
           android:title="@string/share" />
 
+    <item android:id="@+id/bookmark"
+          android:icon="@drawable/ic_menu_bookmark_add"
+          android:title="@string/bookmark"/>
+
     <item android:id="@+id/new_tab"
           android:icon="@drawable/ic_menu_new_tab"
           android:title="@string/new_tab"/>
 
     <item android:id="@+id/new_private_tab"
           android:icon="@drawable/ic_menu_new_private_tab"
           android:title="@string/new_private_tab"/>
 
--- a/mobile/android/base/resources/menu-xlarge-v11/browser_app_menu.xml
+++ b/mobile/android/base/resources/menu-xlarge-v11/browser_app_menu.xml
@@ -5,16 +5,21 @@
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item android:id="@+id/reload"
           android:icon="@drawable/ic_menu_reload"
           android:title="@string/reload"
           android:showAsAction="always"/>
 
+    <item android:id="@+id/back"
+          android:icon="@drawable/ic_menu_back"
+          android:title="@string/back"
+          android:visible="false"/>
+
     <item android:id="@+id/forward"
           android:icon="@drawable/ic_menu_forward"
           android:title="@string/forward"
           android:visible="false"/>
 
     <item android:id="@+id/bookmark"
           android:icon="@drawable/ic_menu_bookmark_add"
           android:title="@string/bookmark"
--- a/mobile/android/base/resources/menu/browser_app_menu.xml
+++ b/mobile/android/base/resources/menu/browser_app_menu.xml
@@ -4,16 +4,21 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item android:id="@+id/reload"
           android:icon="@drawable/ic_menu_reload"
           android:title="@string/reload"/>
 
+    <item android:id="@+id/back"
+          android:icon="@drawable/ic_menu_back"
+          android:title="@string/back"
+          android:visible="false"/>
+
     <item android:id="@+id/forward"
           android:icon="@drawable/ic_menu_forward"
           android:title="@string/forward"/>
 
     <item android:id="@+id/bookmark"
           android:icon="@drawable/ic_menu_bookmark_add"
           android:title="@string/bookmark"/>
 
--- a/mobile/android/base/resources/values-large-v11/styles.xml
+++ b/mobile/android/base/resources/values-large-v11/styles.xml
@@ -56,16 +56,24 @@
         <item name="android:dividerPadding">16dp</item>
 
         <item name="android:paddingTop">0dp</item>
         <item name="android:paddingBottom">0dp</item>
         <item name="android:paddingLeft">0dp</item>
         <item name="android:paddingRight">0dp</item>
     </style>
 
+    <style name="Widget.MenuItemActionBar">
+        <item name="android:layout_width">@dimen/browser_toolbar_height</item>
+        <item name="android:layout_height">@dimen/browser_toolbar_height</item>
+        <item name="android:padding">@dimen/browser_toolbar_button_padding</item>
+        <item name="android:background">@drawable/action_bar_button</item>
+        <item name="android:scaleType">fitCenter</item>
+    </style>
+
     <style name="Widget.BookmarksListView" parent="Widget.HomeListView">
         <item name="android:paddingTop">30dp</item>
         <item name="android:paddingLeft">32dp</item>
         <item name="android:paddingRight">32dp</item>
         <item name="android:scrollbarStyle">outsideOverlay</item>
         <item name="topDivider">true</item>
     </style>
 
--- a/mobile/android/base/resources/values-v11/themes.xml
+++ b/mobile/android/base/resources/values-v11/themes.xml
@@ -43,16 +43,17 @@
         <item name="menuItemActionViewStyle">@style/Widget.MenuItemActionView</item>
         <item name="menuItemDefaultStyle">@style/Widget.MenuItemDefault</item>
         <item name="menuItemShareActionButtonStyle">@style/Widget.MenuItemShareActionButton</item>
         <item name="bookmarksListViewStyle">@style/Widget.BookmarksListView</item>
         <item name="topSitesGridItemViewStyle">@style/Widget.TopSitesGridItemView</item>
         <item name="topSitesGridViewStyle">@style/Widget.TopSitesGridView</item>
         <item name="topSitesThumbnailViewStyle">@style/Widget.TopSitesThumbnailView</item>
         <item name="homeListViewStyle">@style/Widget.HomeListView</item>
+        <item name="geckoMenuListViewStyle">@style/Widget.GeckoMenuListView</item>
         <item name="menuItemActionModeStyle">@style/GeckoActionBar.Button</item>
         <item name="android:actionModeStyle">@style/GeckoActionBar</item>
         <item name="android:actionButtonStyle">@style/GeckoActionBar.Button</item>
         <item name="android:actionModeCutDrawable">@drawable/cut</item>
         <item name="android:actionModeCopyDrawable">@drawable/copy</item>
         <item name="android:actionModePasteDrawable">@drawable/paste</item>
         <item name="android:actionModeSelectAllDrawable">@drawable/select_all</item>
     </style>
--- a/mobile/android/base/resources/values/attrs.xml
+++ b/mobile/android/base/resources/values/attrs.xml
@@ -3,16 +3,19 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <resources>
 
     <!-- Theme level attributes -->
     <declare-styleable name="GeckoTheme">
 
+        <!-- Style for GeckoMenu ListView -->
+        <attr name="geckoMenuListViewStyle" format="reference"/>
+
         <!-- Style for MenuItemActionBar -->
         <attr name="menuItemActionBarStyle" format="reference"/>
 
         <!-- Style for MenuItemActionBar -->
         <attr name="menuItemActionModeStyle" format="reference"/>
 
         <!-- Style for MenuItemActionView -->
         <attr name="menuItemActionViewStyle" format="reference"/>
--- a/mobile/android/base/resources/values/styles.xml
+++ b/mobile/android/base/resources/values/styles.xml
@@ -69,31 +69,35 @@
         <item name="android:checkMark">?android:attr/listChoiceIndicatorMultiple</item>
         <item name="android:ellipsize">marquee</item>
     </style>
 
     <style name="Widget.Spinner" parent="android:style/Widget.Spinner">
         <item name="android:minWidth">@dimen/doorhanger_input_width</item>
     </style>
 
+    <style name="Widget.GeckoMenuListView" parent="Widget.ListView">
+        <item name="android:divider">#FFC9D3DC</item>
+    </style>
+
     <style name="Widget.MenuItemActionBar">
-        <item name="android:padding">@dimen/browser_toolbar_button_padding</item>
+        <item name="android:padding">8dip</item>
         <item name="android:background">@drawable/action_bar_button</item>
         <item name="android:scaleType">fitCenter</item>
     </style>
 
     <style name="Widget.MenuItemActionView">
         <item name="android:divider">@drawable/divider_vertical</item>
         <item name="android:showDividers">middle</item>
         <item name="android:dividerPadding">12dip</item>
         <item name="android:gravity">left</item>
     </style>
 
     <style name="Widget.MenuItemShareActionButton">
-        <item name="android:padding">10dip</item>
+        <item name="android:padding">8dip</item>
         <item name="android:background">@drawable/action_bar_button</item>
         <item name="android:scaleType">centerInside</item>
     </style>
 
     <style name="Widget.MenuItemDefault">
         <item name="android:paddingLeft">10dip</item>
         <item name="android:paddingRight">10dip</item>
         <item name="android:drawablePadding">6dip</item>
--- a/mobile/android/base/resources/values/themes.xml
+++ b/mobile/android/base/resources/values/themes.xml
@@ -77,16 +77,17 @@
         <item name="android:gridViewStyle">@style/Widget.GridView</item>
         <item name="android:textViewStyle">@style/Widget.TextView</item>
         <item name="android:spinnerStyle">@style/Widget.Spinner</item>
         <item name="bookmarksListViewStyle">@style/Widget.BookmarksListView</item>
         <item name="topSitesGridItemViewStyle">@style/Widget.TopSitesGridItemView</item>
         <item name="topSitesGridViewStyle">@style/Widget.TopSitesGridView</item>
         <item name="topSitesThumbnailViewStyle">@style/Widget.TopSitesThumbnailView</item>
         <item name="homeListViewStyle">@style/Widget.HomeListView</item>
+        <item name="geckoMenuListViewStyle">@style/Widget.GeckoMenuListView</item>
         <item name="menuItemDefaultStyle">@style/Widget.MenuItemDefault</item>
         <item name="menuItemActionBarStyle">@style/Widget.MenuItemActionBar</item>
         <item name="menuItemActionModeStyle">@style/GeckoActionBar.Button</item>
     </style>
 
     <style name="Gecko.Preferences" parent="GeckoPreferencesBase"/>
 
 </resources>
--- a/mobile/android/base/widget/GeckoPopupMenu.java
+++ b/mobile/android/base/widget/GeckoPopupMenu.java
@@ -132,25 +132,16 @@ public class GeckoPopupMenu implements G
         if (mMenuPopup.isShowing()) {
             mMenuPopup.dismiss();
 
             if (mDismissListener != null)
                 mDismissListener.onDismiss(mMenu);
         }
     }
 
-    /**
-     * Show/hide the arrow pointing to the anchor.
-     *
-     * @param show Show/hide the arrow.
-     */
-    public void showArrowToAnchor(boolean show) {
-        mMenuPopup.showArrowToAnchor(show);
-    }
-
     @Override
     public boolean onMenuItemSelected(MenuItem item) {
         if (mClickListener != null)
             return mClickListener.onMenuItemClick(item);
 
         return false;
     }