Bug 784395: Custom menu should have proper checked/checkable behavior. [r=mfinkle]
authorSriram Ramasubramanian <sriram@mozilla.com>
Thu, 20 Sep 2012 11:04:50 -0700
changeset 107642 4023d860c3634edc1b41d823f3ceaa7a624acde7
parent 107641 1d109159eb0818d98f3320e5b7fced07dfb956eb
child 107643 b899ee7782ea7e109723d29b029a3e14c571df53
push id15145
push usersramasubramanian@mozilla.com
push dateThu, 20 Sep 2012 18:07:00 +0000
treeherdermozilla-inbound@4023d860c363 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmfinkle
bugs784395
milestone18.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 784395: Custom menu should have proper checked/checkable behavior. [r=mfinkle]
mobile/android/base/GeckoMenuInflater.java
mobile/android/base/Makefile.in
mobile/android/base/MenuItemDefault.java
mobile/android/base/resources/drawable-hdpi-v11/menu_item_check.png
mobile/android/base/resources/drawable-hdpi-v11/menu_item_uncheck.png
mobile/android/base/resources/drawable-mdpi-v11/menu_item_check.png
mobile/android/base/resources/drawable-mdpi-v11/menu_item_uncheck.png
mobile/android/base/resources/drawable-xhdpi-v11/menu_item_check.png
mobile/android/base/resources/drawable-xhdpi-v11/menu_item_uncheck.png
mobile/android/base/resources/drawable/menu_item_checkmark.xml
mobile/android/base/resources/layout/menu_item.xml
--- a/mobile/android/base/GeckoMenuInflater.java
+++ b/mobile/android/base/GeckoMenuInflater.java
@@ -139,13 +139,12 @@ public class GeckoMenuInflater extends M
         a.recycle();
     }
         
     public void setValues(ParsedItem item, MenuItem menuItem) {
         menuItem.setChecked(item.checked)
                 .setVisible(item.visible)
                 .setEnabled(item.enabled)
                 .setCheckable(item.checkable)
-                .setCheckable(item.checked)
                 .setIcon(item.iconRes)
                 .setShowAsAction(item.showAsAction);
     }
 }
--- a/mobile/android/base/Makefile.in
+++ b/mobile/android/base/Makefile.in
@@ -647,16 +647,17 @@ RES_DRAWABLE_MDPI_V11 = \
   res/drawable-mdpi-v11/ic_menu_reload.png \
   res/drawable-mdpi-v11/ic_menu_save_as_pdf.png \
   res/drawable-mdpi-v11/ic_menu_share.png \
   res/drawable-mdpi-v11/menu.png \
   res/drawable-mdpi-v11/menu_panel_bg.9.png \
   res/drawable-mdpi-v11/menu_popup_bg.9.png \
   res/drawable-mdpi-v11/menu_popup_arrow.png \
   res/drawable-mdpi-v11/menu_item_check.png \
+  res/drawable-mdpi-v11/menu_item_uncheck.png \
   $(NULL)
 
 RES_DRAWABLE_HDPI_V11 = \
   res/drawable-hdpi-v11/alert_addon.png \
   res/drawable-hdpi-v11/alert_app.png \
   res/drawable-hdpi-v11/alert_download.png \
   res/drawable-hdpi-v11/ic_menu_back.png \
   res/drawable-hdpi-v11/ic_menu_bookmark_add.png \
@@ -667,16 +668,17 @@ RES_DRAWABLE_HDPI_V11 = \
   res/drawable-hdpi-v11/ic_menu_reload.png \
   res/drawable-hdpi-v11/ic_menu_save_as_pdf.png \
   res/drawable-hdpi-v11/ic_menu_share.png \
   res/drawable-hdpi-v11/menu.png \
   res/drawable-hdpi-v11/menu_panel_bg.9.png \
   res/drawable-hdpi-v11/menu_popup_bg.9.png \
   res/drawable-hdpi-v11/menu_popup_arrow.png \
   res/drawable-hdpi-v11/menu_item_check.png \
+  res/drawable-hdpi-v11/menu_item_uncheck.png \
   $(NULL)
 
 RES_DRAWABLE_XHDPI_V11 = \
   res/drawable-xhdpi-v11/alert_addon.png \
   res/drawable-xhdpi-v11/alert_app.png \
   res/drawable-xhdpi-v11/alert_download.png \
   res/drawable-xhdpi-v11/ic_menu_back.png \
   res/drawable-xhdpi-v11/ic_menu_bookmark_add.png \
@@ -687,16 +689,17 @@ RES_DRAWABLE_XHDPI_V11 = \
   res/drawable-xhdpi-v11/ic_menu_reload.png \
   res/drawable-xhdpi-v11/ic_menu_save_as_pdf.png \
   res/drawable-xhdpi-v11/ic_menu_share.png \
   res/drawable-xhdpi-v11/menu.png \
   res/drawable-xhdpi-v11/menu_panel_bg.9.png \
   res/drawable-xhdpi-v11/menu_popup_bg.9.png \
   res/drawable-xhdpi-v11/menu_popup_arrow.png \
   res/drawable-xhdpi-v11/menu_item_check.png \
+  res/drawable-xhdpi-v11/menu_item_uncheck.png \
   $(NULL)
 
 RES_DRAWABLE_LAND_V14 = \
   res/drawable-land-v14/address_bar_bg.xml \
   $(NULL)
 
 RES_DRAWABLE_LAND_MDPI_V14 = \
   res/drawable-land-mdpi-v14/ic_awesomebar_go.png \
@@ -876,16 +879,17 @@ MOZ_ANDROID_DRAWABLES += \
   mobile/android/base/resources/drawable/address_bar_bg_shadow_repeat.xml       \
   mobile/android/base/resources/drawable/autocomplete_list_bg.9.png             \
   mobile/android/base/resources/drawable/awesomebar_tab_indicator.xml           \
   mobile/android/base/resources/drawable/awesomebar_tab_selected.xml            \
   mobile/android/base/resources/drawable/awesomebar_tab_unselected.xml          \
   mobile/android/base/resources/drawable/desktop_notification.png               \
   mobile/android/base/resources/drawable/highlight.xml                          \
   mobile/android/base/resources/drawable/menu_button.xml                        \
+  mobile/android/base/resources/drawable/menu_item_checkmark.xml                \
   mobile/android/base/resources/drawable/menu_level.xml                         \
   mobile/android/base/resources/drawable/progress_spinner.xml                   \
   mobile/android/base/resources/drawable/progress_spinner_1.png                 \
   mobile/android/base/resources/drawable/progress_spinner_2.png                 \
   mobile/android/base/resources/drawable/progress_spinner_3.png                 \
   mobile/android/base/resources/drawable/progress_spinner_4.png                 \
   mobile/android/base/resources/drawable/progress_spinner_5.png                 \
   mobile/android/base/resources/drawable/progress_spinner_6.png                 \
--- a/mobile/android/base/MenuItemDefault.java
+++ b/mobile/android/base/MenuItemDefault.java
@@ -4,40 +4,47 @@
 
 package org.mozilla.gecko;
 
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.view.View;
+import android.widget.AbsListView;
+import android.widget.CheckBox;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.AbsListView;
 import android.widget.TextView;
 
 public class MenuItemDefault extends LinearLayout
                              implements GeckoMenuItem.Layout {
     private static final String LOGTAG = "GeckoMenuItemDefault";
 
     private ImageView mIcon;
     private TextView mTitle;
-    private ImageView mCheck;
+    private CheckBox mCheck;
+
+    private boolean mCheckable;
+    private boolean mChecked;
 
     public MenuItemDefault(Context context, AttributeSet attrs) {
         super(context, attrs);
 
         Resources res = context.getResources();
         setLayoutParams(new AbsListView.LayoutParams((int) (res.getDimension(R.dimen.menu_item_row_width)),
                                                      (int) (res.getDimension(R.dimen.menu_item_row_height))));
 
         inflate(context, R.layout.menu_item, this);
         mIcon = (ImageView) findViewById(R.id.icon);
         mTitle = (TextView) findViewById(R.id.title);
-        mCheck = (ImageView) findViewById(R.id.check);
+        mCheck = (CheckBox) findViewById(R.id.check);
+
+        mCheckable = false;
+        mChecked = false;
     }
 
     @Override
     public View getLayout() {
         return this;
     }
 
     @Override
@@ -70,16 +77,18 @@ public class MenuItemDefault extends Lin
         super.setEnabled(enabled);
         mTitle.setEnabled(enabled);
         mCheck.setEnabled(enabled);
         mIcon.setColorFilter(enabled ? 0 : 0xFF999999);
     }
 
     @Override
     public void setCheckable(boolean checkable) {
-        mCheck.setVisibility(checkable ? VISIBLE : GONE);
+        mCheckable = checkable;
+        mCheck.setVisibility(mCheckable ? VISIBLE : GONE);
     }
 
     @Override
     public void setChecked(boolean checked) {
-        mCheck.setVisibility(checked ? VISIBLE : GONE);
+        mChecked = checked;
+        mCheck.setChecked(mChecked);
     }
 }
index 5fa52a90f090b454d46d0daad6dfc61bd95280b4..958251d6b48ff5844854e22f41528f90209df545
GIT binary patch
literal 3149
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
GOZ+Fv9c{e;
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..19f04294bedb7e7c7211b3b77ac4d183b0839e22
GIT binary patch
literal 1083
zc$}S6PiWIn7|)yx8Qa053geMo6m9Ze+NMpmy0uNa71mkW!g}yvmb|WEOI}Rg)^y-O
z4?4k<2p&8riU&O?vXcsK2OS79@Tf-*o(AGchM>O8W{Mj-_(<~J_vQEdzVCg1u2-ff
z2K$fqa~wBVn$)Unhv9pqk9}tjZC_*CF<NNQ8fntD?qM!#l35H&wmyfeST{Qt-{Mh@
z>up)}25pq5RD;-p9%6*RcDZnkjs>o6%wq~>@toyk_%AQlcwm_sekNIlWjBvo*5tB>
zYs=GhV|m_COn&Sv7!6crz{XSufxY1PYLMY~?5gY>szn~`K<Ipi{~c7LTmgCFVUQH!
zF#{q5WLZFoq%5N|K!QjTA$#N)N~lR$l~SO)c;?MBn`%`nc6~7^!?!4PRZ(oW+d?}o
z5N}RIilT%zBq_!aF~8$bJ%~B}aAZNlzTsIewTJ^kS)V0~G{f`J6>PU$-Zkv_-9)jJ
ziGl8lNPwbkixJwVRopxn?bkal7OU7Ni=M&i(H#EE)xp#d$f8ltc@`^*zMv6f(Z&uf
zX&IjV5lqWeVK&XOm`cEu1m!eBX_$`ZbH%)-#ie2{2_qZ(af|U(E`hXSA+F^RDj+45
zRkXB}f(k6aY`hS0OO8)<$G{QS`ok?8$W`+m)+zDoge*iIP-ziL{1$ORz9xf{W!<ox
zP;n|OP&ZcWSxeX~dc+1h8CI=*B7kV`%@r*vDRNGev}B&|a?StAn#h6?|7n*<#d<J2
z?lwOYcE<-hY-T(*9KDrIi4B%j(z5m7<JN~~gX>`6@c4>!^V{9^5yig6KRo*B6@Byd
zK3aXevH5)Ca}R?z?tC9vSvlXi_wL5(iQxA8OWQ+;+q1@NKb9Umx_ou&=j%|M=pE|m
X<JOx4r@`9O7onz9nAV=;E?oHq2P#jt
index ef5ce22ed0aa3bece5580813031ad315c9f37e0b..48d2e1e322a2a88222e18f5345c7f0272bdd1faa
GIT binary patch
literal 1938
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
bV}{t0Zg!W2gBovd%U@C~3V}-lW3&DQxqt*O
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f7f033cf5d7cdb9c4cfd97f404fe3f15467c217b
GIT binary patch
literal 1047
zc$}S6J#5oJ6m}GWpj9UZ3KDQ~5dw+WXFG9XtEMFWp^->i(nw^iV_y<0wa?gB;&!Uo
zIuup}%#5&rKw>~$kSYOUVt|E#ofQeBaxQU%pz6TM_T78_zW3g}pRJ{ZYf}@aCm4pA
zs?Qrux=*L?v7_|+WvG3p+bLqU$ujPep&cQn>f#Opb>HrxCbHf2Tf1nMVe);i)h6x6
zb=AQ>XQvo0@k1tEvvWykI|D>O2lc!_W52z6%>vKW*qfyWY=k=Md-EF+THaV_IU55<
zaoM>mU^Y>y0Ur??B>rj;tBJ<$+g0f~Rr4&^hme8B{tl|$SOPkZ5GZj{!GVGRWSJ9+
zC0Q0O0}%=$59uQpgrZuKRj~|4i>2Nox2rY{YvhYc8rvr%RC#_l9CAa6!%>eH6h%pG
zh+=^v3h{bC?4%IHGnoYg#ZKgf#KQqdWxIpdh{m$n75uQ#7#j}aQKD$d_{0u*frGs7
z^BFoOP1HRc9k<p)#5Yll*CL13qdW75tHY@&kVc~}MjkDSy=q`*%|`*L8yZXhaIWX7
zuv(#6EEi!}gmOg?DzGByHA^=PNwjJunAtdpYe{8ADO%8!jG7>rf>N$3Mnx<`1)8ub
znHjep#KaC9lySW=*R&4hs(OTMf}<A3t62vu^)bP5ABR9+mchk_?RY_|xRe%X6f26n
z+sL&d?1TLbtKI<-K;hq;D@I9F<eDKGC7m5{-T%oNPlMtAYL`q!doVqYo1Y5f@j(Hd
znTQU@)5YWW>0p_4quNS7b$;&c&E*TZ6Z!3(4=*;4yrJF|eXH7g|47&w<ldf*-ksb2
wdSlWmOg~?F_VU8x*7=k0?#JDHkh{8>V;(-3{IPrQ%;$7e>*j*-q_%SB7ut43VE_OC
index 464c4522f2f41966653f24f10f809365d88c3db7..3653e72cfebb342b593427ef299e52cd7d2e6576
GIT binary patch
literal 2572
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0c13cae05868f2f497478f543a66394ae1d729c0
GIT binary patch
literal 1072
zc$}S6OK;Oa5OyD+s-g&Pg<iHU5>z67CQfW6gv3s0BvPUz5<x-;$KEuivDesJ;`TzR
zR3uKED#|}VRN@XCIKTzb1CI+rJj4+MEq?&Sy2J%R)dMTryEFd2nb~>Vs7#+489qEr
zQPfCjN~@CnNcaxzCEt(K>MGd|;X(t~Pz!f;4^lZ3H6bY3`V6c>-JHMt6s9R^pl#I~
zxKTc>7|3Sy5W@tvONA?)4P4!rg%~v9jOAqL&4-U@V3`^EY@*DST@|*isRa+#7N+aQ
z!mJ^iboK;D2MRG@L#%_q?l`^@Waurs3OR>rmIhl8Je#3^1=T25fQmc_5{wu#IGzWR
z#PIQiB=N_A!0`ghkw=R0aU~%sLK5^AO}u$#OQ~wbo-ZP0=r+c#!m{0Nm+6WO@@80G
zmgUffAjAkF=FdA=4`Pl#5n0fnZ+MoAE#!bu)|+S!XJ|UQg6)>e+lC##mnf1lHqc#`
zXE@fj*$D09Ds1hJ_UrR5WUJ6ebDlx!(VF<f)$Y^~NTN~Bcor#&-qDaTXF~^<v<yxD
zFs5ZHTrNejn2d8tfs;}^pW;%YnlGxFCJM!Tf{SeI#4U<RS&kRu1yRfMe1VsfIax~y
zNlxYpTuv-R+>+yC-7#RqwSIHOUAc<tK^-Hnj!-A+fJz%-<hPLv)S3j2m36~%Ld9fQ
zpkA!dv#vn1=ph?yWmvIxh=Ak&y}7I<1X;>!f|gL}9@qSztg$2*_OEt{RHO&P<972C
zVS9X_LuSS!!!hxo{e%qGg_4%52XDT-mWL^@PkS+%u5MgidOO*?^=8lcAB)Q?H^-On
z9vnX!TY20+^t^NF{p#(_^!mH68`r&aYtQsMeSQ6dLkGagMe6&v&!hJTvL7m+visMG
cX6)7AC^c5YYuEawUWPMVDoktl@)wtW0!s@}IsgCw
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/resources/drawable/menu_item_checkmark.xml
@@ -0,0 +1,12 @@
+<?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/. -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_checked="true" android:drawable="@drawable/menu_item_check"/>
+
+    <item android:drawable="@drawable/menu_item_uncheck"/>
+
+</selector>
--- a/mobile/android/base/resources/layout/menu_item.xml
+++ b/mobile/android/base/resources/layout/menu_item.xml
@@ -17,21 +17,22 @@
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:textSize="16sp"
                android:textColor="@color/menu_item_title"
                android:singleLine="true"
                android:ellipsize="middle"
                android:layout_gravity="center_vertical"/>
 
-     <ImageView android:id="@+id/check"
-                android:layout_width="20dp"
-                android:layout_height="14dp"
-                android:paddingLeft="6dp"
-                android:layout_gravity="center_vertical"
-                android:src="@drawable/menu_item_check"
-                android:visibility="gone"/>
+     <CheckBox android:id="@+id/check"
+               android:layout_width="18dp"
+               android:layout_height="18dp"
+               android:layout_gravity="center_vertical"
+               android:button="@drawable/menu_item_checkmark"
+               android:focusable="false"
+               android:clickable="false"
+               android:visibility="gone"/>
 
      <View android:layout_width="14dp"
            android:layout_height="fill_parent"
            android:layout_gravity="center_vertical"/>
 
 </merge>