Bug 1100464 - Add back button to top left of the tabs panel (r=lucasr)
authorMartyn Haigh <martyn.haigh@gmail.com>
Tue, 09 Dec 2014 17:07:26 +0000
changeset 244720 383988745eb24d55eb2cd669769fc336211f4f3c
parent 244719 5f6269fe747a4d93eb36e385a68243f19e11ecde
child 244721 d7c76fe69e9a833ed7727185345d8c61f18b72c4
child 244782 e2759f8d7232e1856d25f73a79b6bacaa85ca2de
push id4489
push userraliiev@mozilla.com
push dateMon, 23 Feb 2015 15:17:55 +0000
treeherdermozilla-beta@fd7c3dc24146 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerslucasr
bugs1100464
milestone37.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 1100464 - Add back button to top left of the tabs panel (r=lucasr)
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_nav_back.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_nav_back.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_nav_back.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_nav_back.png
mobile/android/base/newtablet/res/layout-large-v11/new_tablet_tabs_panel_back_button.xml
mobile/android/base/resources/layout/tabs_panel_default.xml
mobile/android/base/resources/values/layout.xml
mobile/android/base/tabs/TabsPanel.java
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1754c44edc86aa78dfca1f22413f295002cec066
GIT binary patch
literal 808
zc$@(!1K0eCP)<h;3K|Lk000e1NJLTq000{R000{Z1^@s6jnwp200001b5ch_0Itp)
z=>Px%;z>k7R7ef2R?lk_K@^_ZZcPhHQ7QgF^d#QY=urrQAR=^kldVBeEDDOWcu)(1
zdI*$);Gu|M$t6Kct;BAUP4rSd=}E-W*8iY*5QUy9p)uL<o63}AcaohL2bMSUeth4&
zo%d#!k`9OCIESd-`-&18WsE&rSy~)VrBa>>jIQD&d~&XPgfi_tCFB6tQA%$gJ$`aK
zrZ<F7JE^rZHrnQ0H>wluBc*?dgbnMf$V>?bn+zY0<DQ~D+FJk*1iTrWiCe~%fL@{q
z-BF=XKC9_;K}N&~dA_`~cuj&URkb~{eBMnk%H~iE+x*cej;VxY+=U*TYNKUlAQ~YW
z&7lYaL>^-gKy;@QBEB7IW=^4Wi)!=<>`iBiY&@hfYFkE{2X{J}z<6-MEkA^q@B@LU
zN+`RWFwNI~o9enLvwX4i7=h!G;9taJ@kGLWC$TB3HZ$XWax8jc8gDJooQ#n*kJQf(
zTh=FK)E163olf@-?%DqWrF~K6!_NtusLO1sI$*DRo;Rrv?%kI`dQu_|hHB&$+p=mE
z33mc#LPHP56$83*16jX@*Yvb26vbei{kP2mK^0Dd`MxX;oB09T45ac+;m1MfPmOra
zR-b|J9zY-Y9r+s0{A%JiMpt8tjHBd><uOzaf2~b=ZbL~<+vd<1rvIE_05o4L;&Y*8
zkYx`iX&h*R%*yhY>#ASo##lZNka6XFp=6^>UxF}j3FG8uYt_m~GMVhS_oV$Z95)<X
zPbSW)!pR#4Uh^eA(m%&9gGRl|T$-5(bX+&4G5Q9by+i1PM200~cmWw!g)U4=GZR6!
zX@2nP<P3n<gic6gXy}nXH=E7&30;_MOU8q3+xT1~_0uT9?|v}cKIaB@?Vk1PTdhOM
zcwo}9zIwkmVyOC6KM)9w|N3_&2y(gdK|MnFf8$}HLlLFX@HfS}om9$903?$`tF?_v
m3<L{!*6~c?k9btr!{i@*WcCggKxf$i0000<MNUMnLSTYh1#=7l
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..311c8ac7f8b858154cc7613613cb4e8372e8923e
GIT binary patch
literal 581
zc$@)60=oT)P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B00001b5ch_0Itp)
z=>Px$|4BqaR5%fxRL@HrQ4pR<)+VWF1(6no{sAgh?WqS(A~c9iyP**z<f7+bJyef@
zp4)qRk`T27T-{hoe_Skh=|%J^2(2C!;%^h<W;(lc-o~UG!CbzXZ@>3t=Dm3j;g+AV
zx;6(0GeDJj{bl5>mmIx5FptJ+{yieT5e-=|r0ZiFl2@Zvok*NYrF>5Y20yabq;N#A
zQ}9=|C9lQ0iqh$HQ^%vu1^)0_#00c?T`E40#bO7-)#8nca=Bbc3j~+hB&>u4>lbGy
zk$60QqPYJAKH;+2Y^!!J_!R+_30Gns6%NC<nb;mqYldO8qp#^3XHUf#h~~>z#VKyb
zQe1-omrS!WNcaN~yG2Jtm;4WT0wm$Q5P2?u;IkG0{9bKhFW@5&F^oIqdO0Ybtq^p3
zk4_bL_uy1Ju2|s*=>Ni1JQE+gHLh!pu^^lm`gk)dR{57xeI}D>ZfR{Zxu;>ZfMDzL
z0!Ah##ts$NAaIU9kw~2H@BJQS^EIVK=npp2`r@MbP;m_cHAl&0vb4Rmsq<C%Bzm5y
zp3r^#$%EP@oEO#|jD64g`UlgzXH&9>&3DPV8jePze}t>WI-`FATru+>c*CdN1+-T#
z75jKVk6q4<RBJBfMD!~1!hSy9xja7h`vbjhelzl_NU8W?OY+Fg^1WMV^sxN}9J8jg
T<M&2N00000NkvXXu0mjfTV4rq
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cc8497057d836b7e89ec5ca01f6718d08c522626
GIT binary patch
literal 1062
zc$@(y1ljwEP)<h;3K|Lk000e1NJLTq001Na001Qj1^@s6DqKrF00001b5ch_0Itp)
z=>Px&;7LS5R9FekSY2owRTMsFW=xSpX({$e(mquMY1BSQ{Hdia=0UQvJF_f4ta<25
ztJsHvNb;a8M1t4{A+*(!hd?Z1w(iXAE-GzaLhzv!ib+9eX%$3~(h{{|Fxl?h<C#Fh
z?9aVBJG%+qm%Ve&cfa%Px##}O0Ccxur*s_?1Ol95`6L460I-jUKC4z%M>Cm>A4i-X
zXHa-dp;(^K06q@Hu)PNnU(yWY*=L@9%9)>^7h!CaK6Axx=z67dOfXi@fPmJ4=MKJC
zZ;$e9L;=-fa=Dyw;Q1G(IV;(EU+DQ@s2{o8wxG$$$sJGb-8aiwFjY|q{4Z60nXfHD
zGcz;2k3GK2W3pp1LN027MDN<Eq$|Uy?2!dcyY9|D)V~FUK^Y+tJS4!ktW;uFhG}Jw
zB*<}`J)jv^c#jxR5UvRD?Q}AES%GQkYAGn6FZY86b1Y`RjEyt%2l@0y+D=}TVWQfV
zf;cn#QKvaxP5n|rqTfXoUQeeJKT0ueIHda!iy1)OSWt-}fZMC&zuYY`f$pY9hvSq7
zQ6ny3+$sHY1dAjd4q29UPl}1*Xvokdw|o?Jm{W=2rM<B7&x6;xEhf-kBgk<|rlG+%
zZ10u+Iim7|KbMEH+3ep^Ob3q5DRbRo7Br2I1CSPaP&43*QPQE>LCj`DeSZyZWisZS
zbwLHM^p1vjmXVtRn~mCH8&?92A&WV|Vm{yEVA1G_{$edS9u2(>C|=bXAB3yh5Gra2
z(gcX(T&({OQ3OltMSRJ159_FxdHRBDsJs#VN(eXQfOsAx6awMril~0FxvIYQycb#2
zcTBlUM$4<<Ul3$kmdWSa*0fDQ0ex_OtzR<`_b9@x@ig1EX$Bi;*IUg_%}2pf73mOP
zCw@~z+QBJy3Z9ozU}C#!1O+S^)4WA~<rNn7lZ=&Xtw%#W?-Yw~$}n;54T1t9+qQpU
zQLhq^>W*Uo;YG*uM&br<Hm;_I>H%C+yHR`OG9M_aR~k;HIANLQRQ>ok&rLJ5LBut+
z%-4(~oT=|OY)yU<LAy|JOQ)Ln+BPW#1#H1J<NjS7;w67Y!H$}Sla5!4^|l)3RZdwL
zn9t{XjGjlo;&ilHT_2>(;g7;&+v&H=&;}WQ&8Xa1yq@9dySQPK{El;`Vhf6#p-^yi
zyz+U@)X9*op(_N9*r~)94UQIu$QcUpkd+*Mo8Oqvglr96-m4M~#t4Qug4SuRr1`!O
z;zMZ+glkft!Vz0gz-gz<ah{sf+~pfgs1X%z{BZr#kR@_AP7O7X^SPEr)F=3|_XHRH
gRJF1;7Wb3hf1Wx;l7ad5cmMzZ07*qoM6N<$f_+=|N&o-=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..de7b10121183f1c2d8fd0b266ec7ab7d9ab346f8
GIT binary patch
literal 1016
zc%17D@N?(olHy`uVBq!ia0vp^W<YGt!3-n|j(d7BFfjH9_=LDJfI&k;!>U!QfaJ`X
zGl7grlO_SlnKL&pTC@nrn7eV~k|j%kjQQ)=FI~EH-MV$lmTg|PY$H%)`9=`AcJ12b
z8#VyRRjW3wU%!6Us*S5QYyc_)l0fd7jT={Q*Z@RpK-^91)&bGRbsIMV*=s@EjUW=l
z-MDVUW(c`%15gUYSi51<`i+}`YzVn_BS>of#!c(iZ(a{n1L6Xu5F+b9A|M8sy$NL0
zMyMc|u?Z{-Wv>TYgdh=uo52ha8!Qf&f@lYmP{W~&^<Y~dQZPY?I9xr<<zPobxNvc>
z6o`E={ro{-e6*AV`2{mDGBLBTvaxe=ar5x<@e2qFi-=1|Nz2H}D=MpK>F64pSlPOJ
z`UHhW#>OWkWoGB(6_!<0)zsEExApZ;m^69H%sF%CFIc!}>9XZ3SFK*VdCS&q+js2T
zfAG-ZBS%l3I(_E+g^O3NUb}Jg_MN-;9z1;V^x5;*Z{EIp|Ka23uiw7^`1$MipTGb7
zva=b1No9(si(^Oy<J@cE<wAiXM?V@jhqE)X9$OS~q-n4CLA|n#8d?fkT{kv%w2F8*
zow&m<7on13pE9xb`Tu{_*4gWo7jt#=e+%E;`}tJJ($f7-7kpwbHJ{3EJ-=_E_~}nx
zwigaZF@{-I?!B@_DRjq@g};|{?R5?9F3NiB9<u&gu~wk_)N+fhkIh$AcLkr^zhYg~
zoLkn7TFNmi%@p3VtmG?mDCL{@>W0jUu&$8hwgG2tmz>I2v9a6vT58CBp*frK7gfD4
z^0IXajXSRSTyoWNzU4~#re;^87JfW+abDN{%g5$Ux}lzXFMQ|f+9xOL->PT+NY1oh
z)yaOS-2KR|q%O71iZ4qYlXvpIdy%y1f@E*1uA=q3g}ZY%zbg=r%@cjicV<ELnuzV|
zd*7XuI`|?}*J91>zx=U=M|RDvzp%G&L*8%xlBpW6x79d?_ijG7cH!>_oAiFM-F@!6
zhFkpN)$PBkyuO^zT@&1Y;qR?8yAJ4<R3>g-$M|}U*sg8^#%&+w%5Hj{bjdS+ftRD<
qs}ni#dkc<ic=CDU`{z@1Zrdb06Ifp5FLeTxfjwRQT-G@yGywo@#5Y3#
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/newtablet/res/layout-large-v11/new_tablet_tabs_panel_back_button.xml
@@ -0,0 +1,14 @@
+<?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/. -->
+
+<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
+             android:id="@+id/nav_back"
+             android:layout_width="@dimen/tabs_panel_indicator_width"
+             android:layout_height="match_parent"
+             android:minWidth="@dimen/tabs_panel_indicator_width"
+             android:src="@drawable/new_tablet_nav_back"
+             android:contentDescription="@string/back"
+             android:background="@drawable/action_bar_button_inverse"/>
+
--- a/mobile/android/base/resources/layout/tabs_panel_default.xml
+++ b/mobile/android/base/resources/layout/tabs_panel_default.xml
@@ -13,16 +13,21 @@
                     android:layout_width="match_parent"
                     android:layout_height="@dimen/browser_toolbar_height">
 
         <view class="org.mozilla.gecko.tabs.TabsPanel$TabsPanelToolbar"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="@color/background_tabs">
 
+            <ViewStub android:id="@+id/nav_back_stub"
+                      android:layout="@layout/new_tablet_tabs_panel_back_button"
+                      android:layout_width="wrap_content"
+                      android:layout_height="match_parent"/>
+
             <org.mozilla.gecko.widget.IconTabWidget android:id="@+id/tab_widget"
                                                     android:layout_width="wrap_content"
                                                     android:layout_height="match_parent"
                                                     android:tabStripEnabled="false"
                                                     android:divider="@drawable/tab_indicator_divider"
                                                     android:layout="@layout/tabs_panel_indicator"/>
 
             <View android:layout_width="0dip"
--- a/mobile/android/base/resources/values/layout.xml
+++ b/mobile/android/base/resources/values/layout.xml
@@ -4,9 +4,10 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <resources>
     <item type="layout" name="tabs_panel">@layout/tabs_panel_default</item>
     <item type="layout" name="tabs_layout_item_view">@layout/tabs_item_row</item>
     <item type="layout" name="new_tablet_browser_toolbar">@null</item>
     <item type="layout" name="new_tablet_tab_strip">@null</item>
     <item type="layout" name="new_tablet_tabs_item_cell">@null</item>
+    <item type="layout" name="new_tablet_tabs_panel_back_button">@null</item>
 </resources>
--- a/mobile/android/base/tabs/TabsPanel.java
+++ b/mobile/android/base/tabs/TabsPanel.java
@@ -25,16 +25,17 @@ import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewStub;
 import android.widget.Button;
 import android.widget.FrameLayout;
 import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 
 public class TabsPanel extends LinearLayout
                        implements GeckoPopupMenu.OnMenuItemClickListener,
@@ -83,16 +84,17 @@ public class TabsPanel extends LinearLay
     private PanelView mPanelNormal;
     private PanelView mPanelPrivate;
     private RelativeLayout mFooter;
     private TabsLayoutChangeListener mLayoutChangeListener;
 
     private IconTabWidget mTabWidget;
     private static ImageButton mMenuButton;
     private static ImageButton mAddTab;
+    private ImageButton mNavBackButton;
 
     private Panel mCurrentPanel;
     private boolean mIsSideBar;
     private boolean mVisible;
     private boolean mHeaderVisible;
 
     private final GeckoPopupMenu mPopupMenu;
 
@@ -158,16 +160,27 @@ public class TabsPanel extends LinearLay
 
         mMenuButton = (ImageButton) findViewById(R.id.menu);
         mMenuButton.setOnClickListener(new Button.OnClickListener() {
             @Override
             public void onClick(View view) {
                 showMenu();
             }
         });
+
+        if(NewTabletUI.isEnabled(getContext())) {
+            ViewStub backButtonStub = (ViewStub) findViewById(R.id.nav_back_stub);
+            mNavBackButton = (ImageButton) backButtonStub.inflate( );
+            mNavBackButton.setOnClickListener(new Button.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    mActivity.onBackPressed();
+                }
+            });
+        }
     }
 
     public void showMenu() {
         final Menu menu = mPopupMenu.getMenu();
 
         // Each panel has a "+" shortcut button, so don't show it for that panel.
         menu.findItem(R.id.new_tab).setVisible(mCurrentPanel != Panel.NORMAL_TABS);
         menu.findItem(R.id.new_private_tab).setVisible(mCurrentPanel != Panel.PRIVATE_TABS);