Bug 1491660 - Remove statusbar and statusbarpanel bindings. r=mkmelin,MakeMyDay
authorArshad Khan <arshdkhn1@gmail.com>
Sun, 16 Sep 2018 16:50:00 +0530
changeset 33640 87943872543e306a510525a2a02502564ff49f18
parent 33639 86c5e6686ff369415311612453b2b6c966683e72
child 33641 22fd73b428cd4578b5cfffb1833d62d0742759d8
push id388
push userclokep@gmail.com
push dateMon, 28 Jan 2019 20:54:56 +0000
reviewersmkmelin, MakeMyDay
bugs1491660
Bug 1491660 - Remove statusbar and statusbarpanel bindings. r=mkmelin,MakeMyDay
calendar/base/content/dialogs/calendar-event-dialog.xul
calendar/lightning/content/messenger-overlay-sidebar.xul
calendar/providers/gdata/content/gdata-event-dialog.js
calendar/providers/gdata/content/gdata-event-dialog.xul
chat/content/browserRequest.xul
chat/themes/browserRequest.css
common/bindings/generalBindings.js
common/bindings/generalBindings.xml
common/content/customElements.js
editor/ui/composer/content/editor.xul
editor/ui/composer/content/editorTasksOverlay.xul
mail/base/content/ABSearchDialog.xul
mail/base/content/FilterListDialog.xul
mail/base/content/SearchDialog.xul
mail/base/content/bindings.css
mail/base/content/mainStatusbar.inc
mail/base/content/messageWindow.xul
mail/base/content/messenger.css
mail/base/content/messenger.xul
mail/base/jar.mn
mail/components/addrbook/content/addressbook.xul
mail/components/compose/content/messengercompose.xul
mail/themes/linux/mail/messenger.css
mail/themes/osx/mail/messenger.css
mail/themes/windows/mail/compacttheme.css
mail/themes/windows/mail/mailWindow1.css
mail/themes/windows/mail/messenger.css
mailnews/base/content/subscribe.xul
--- a/calendar/base/content/dialogs/calendar-event-dialog.xul
+++ b/calendar/base/content/dialogs/calendar-event-dialog.xul
@@ -571,78 +571,82 @@
              defaultlabelalign="end"
              context="event-dialog-toolbar-context-menu"
              defaultset="button-saveandclose,button-attendees,button-privacy,button-url,button-delete"/>
     <toolbarset id="custom-toolbars" context="event-dialog-toolbar-context-menu"/>
   </toolbox>
 
   <!-- the iframe is inserted here dynamically in the "load" handler function -->
 
-  <statusbar class="chromeclass-status" id="status-bar">
-    <statusbarpanel id="status-text"
-                    flex="1"/>
-    <statusbarpanel id="status-privacy"
-                    align="center"
-                    flex="1"
-                    collapsed="true"
-                    pack="start">
+  <hbox id="status-bar" class="statusbar chromeclass-status">
+    <hbox id="status-privacy"
+          class="statusbarpanel"
+          align="center"
+          flex="1"
+          collapsed="true"
+          pack="start">
       <label value="&event.statusbarpanel.privacy.label;"/>
       <hbox id="status-privacy-public-box" privacy="PUBLIC">
         <label value="&event.menu.options.privacy.public.label;"/>
       </hbox>
       <hbox id="status-privacy-confidential-box" privacy="CONFIDENTIAL">
         <label value="&event.menu.options.privacy.confidential.label;"/>
       </hbox>
       <hbox id="status-privacy-private-box" privacy="PRIVATE">
         <label value="&event.menu.options.privacy.private.label;"/>
       </hbox>
-    </statusbarpanel>
-    <statusbarpanel id="status-priority"
-                    align="center"
-                    flex="1"
-                    collapsed="true"
-                    pack="start">
+    </hbox>
+    <hbox id="status-priority"
+          class="statusbarpanel"
+          align="center"
+          flex="1"
+          collapsed="true"
+          pack="start">
       <label value="&event.priority2.label;"/>
       <image id="image-priority-low"
              class="cal-statusbar-1"
              collapsed="true"
              value="low"/>
       <image id="image-priority-normal"
              class="cal-statusbar-1"
              collapsed="true"
              value="normal"/>
       <image id="image-priority-high"
              class="cal-statusbar-1"
              collapsed="true"
              value="high"/>
-    </statusbarpanel>
-    <statusbarpanel id="status-status"
-                    align="center"
-                    flex="1"
-                    collapsed="true"
-                    pack="start">
+    </hbox>
+    <hbox id="status-status"
+          class="statusbarpanel"
+          align="center"
+          flex="1"
+          collapsed="true"
+          pack="start">
       <label value="&task.status.label;"/>
       <label id="status-status-tentative-label"
              value="&newevent.status.tentative.label;"
              hidden="true"/>
       <label id="status-status-confirmed-label"
              value="&newevent.status.confirmed.label;"
              hidden="true"/>
       <label id="status-status-cancelled-label"
              value="&newevent.eventStatus.cancelled.label;"
              hidden="true"/>
-    </statusbarpanel>
-    <statusbarpanel id="status-freebusy"
-                    class="event-only"
-                    align="center"
-                    flex="1"
-                    collapsed="true"
-                    pack="start">
+    </hbox>
+    <hbox id="status-freebusy"
+          class="statusbarpanel event-only"
+          align="center"
+          flex="1"
+          collapsed="true"
+          pack="start">
       <label value="&event.statusbarpanel.freebusy.label;"/>
       <label id="status-freebusy-free-label"
              value="&event.freebusy.legend.free;"
              hidden="true"/>
       <label id="status-freebusy-busy-label"
              value="&event.freebusy.legend.busy;"
              hidden="true"/>
-    </statusbarpanel>
-  </statusbar>
+    </hbox>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
+  </hbox>
 </dialog>
--- a/calendar/lightning/content/messenger-overlay-sidebar.xul
+++ b/calendar/lightning/content/messenger-overlay-sidebar.xul
@@ -210,99 +210,104 @@
               resizebefore="closest"
               state="collapsed"
               class="calendar-sidebar-splitter"
               oncommand="TodayPane.onCommandTodaySplitter();">
     </splitter>
     <modevbox id="today-pane-panel" />
   </hbox>
 
-  <statusbar id="status-bar">
+  <hbox id="status-bar">
     <!-- event/task in tab statusbarpanels -->
-    <statusbarpanel id="status-privacy"
-                    class="event-dialog"
-                    align="center"
-                    flex="1"
-                    collapsed="true"
-                    pack="start">
+    <hbox id="status-privacy"
+          class="statusbarpanel event-dialog"
+          align="center"
+          flex="1"
+          collapsed="true"
+          pack="start">
       <label value="&event.statusbarpanel.privacy.label;"/>
       <hbox id="status-privacy-public-box" privacy="PUBLIC">
         <label value="&event.menu.options.privacy.public.label;"/>
       </hbox>
       <hbox id="status-privacy-confidential-box" privacy="CONFIDENTIAL">
         <label value="&event.menu.options.privacy.confidential.label;"/>
       </hbox>
       <hbox id="status-privacy-private-box" privacy="PRIVATE">
         <label value="&event.menu.options.privacy.private.label;"/>
       </hbox>
-    </statusbarpanel>
-    <statusbarpanel id="status-priority"
-                    class="event-dialog"
-                    align="center"
-                    flex="1"
-                    collapsed="true"
-                    pack="start">
+    </hbox>
+    <hbox id="status-priority"
+          class="statusbarpanel event-dialog"
+          align="center"
+          flex="1"
+          collapsed="true"
+          pack="start">
       <label value="&event.priority2.label;"/>
       <image id="image-priority-low"
              class="cal-statusbar-1"
              collapsed="true"
              value="low"/>
       <image id="image-priority-normal"
              class="cal-statusbar-1"
              collapsed="true"
              value="normal"/>
       <image id="image-priority-high"
              class="cal-statusbar-1"
              collapsed="true"
              value="high"/>
-    </statusbarpanel>
-    <statusbarpanel id="status-status"
-                    class="event-dialog"
-                    align="center"
-                    flex="1"
-                    collapsed="true"
-                    pack="start">
+    </hbox>
+    <hbox id="status-status"
+          class="statusbarpanel event-dialog"
+          align="center"
+          flex="1"
+          collapsed="true"
+          pack="start">
       <label value="&task.status.label;"/>
       <label id="status-status-tentative-label"
              value="&newevent.status.tentative.label;"
              hidden="true"/>
       <label id="status-status-confirmed-label"
              value="&newevent.status.confirmed.label;"
              hidden="true"/>
       <label id="status-status-cancelled-label"
              value="&newevent.eventStatus.cancelled.label;"
              hidden="true"/>
-    </statusbarpanel>
-    <statusbarpanel id="status-freebusy"
-                    class="event-only event-dialog"
-                    align="center"
-                    flex="1"
-                    collapsed="true"
-                    pack="start">
+    </hbox>
+    <hbox id="status-freebusy"
+          class="statusbarpanel event-only event-dialog"
+          align="center"
+          flex="1"
+          collapsed="true"
+          pack="start">
       <label value="&event.statusbarpanel.freebusy.label;"/>
       <label id="status-freebusy-free-label"
              value="&event.freebusy.legend.free;"
              hidden="true"/>
       <label id="status-freebusy-busy-label"
              value="&event.freebusy.legend.busy;"
              hidden="true"/>
-    </statusbarpanel>
+    </hbox>
     <!-- end event/task in tab statusbarpanels -->
-    <statusbarpanel id="calendar-show-todaypane-panel"
-                    pack="center">
+    <hbox id="calendar-show-todaypane-panel"
+          class="statusbarpanel"
+          pack="center">
       <toolbarbutton id="calendar-status-todaypane-button"
                      todaypane="true"
                      type="checkbox"
                      label="&todaypane.statusButton.label;"
                      tooltiptext="&calendar.todaypane.button.tooltip;"
                      observes="calendar_toggle_todaypane_command"
                      command="calendar_toggle_todaypane_command"/>
-    </statusbarpanel>
-    <statusbarpanel id="calendar-invitations-panel"
-                    insertbefore="unreadMessageCount,totalMessageCount"
-                    oncommand="openInvitationsDialog()">
+    </hbox>
+    <hbox id="calendar-invitations-panel"
+          class="statusbarpanel"
+          insertbefore="unreadMessageCount,totalMessageCount"
+          oncommand="openInvitationsDialog()">
       <label id="calendar-invitations-label"
              class="text-link"
              onclick="openInvitationsDialog()"
              onkeypress="if (event.key == 'Enter') { openInvitationsDialog(); }"/>
-    </statusbarpanel>
-  </statusbar>
+    </hbox>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
+  </hbox>
 </overlay>
--- a/calendar/providers/gdata/content/gdata-event-dialog.js
+++ b/calendar/providers/gdata/content/gdata-event-dialog.js
@@ -24,8 +24,20 @@ window.addEventListener("message", (aEve
                 let node = document.getElementById(id);
                 if (node) {
                     node.disabled = aEvent.data.isGoogleTask;
                 }
             }
         }
     }
 });
+
+
+const gdataStatusPrivacyHbox = document.createElement("hbox");
+gdataStatusPrivacyHbox.setAttribute("id", "gdata-status-privacy-default-box");
+gdataStatusPrivacyHbox.setAttribute("privacy", "DEFAULT");
+gdataStatusPrivacyHbox.setAttribute("provider", "gdata");
+
+const statusPrivacy = document.getElementById("status-privacy");
+statusPrivacy.insertBefore(
+    gdataStatusPrivacyHbox,
+    document.getElementById("status-privacy-public-box")
+);
--- a/calendar/providers/gdata/content/gdata-event-dialog.xul
+++ b/calendar/providers/gdata/content/gdata-event-dialog.xul
@@ -16,15 +16,10 @@
               label="&gdata.privacy.default.label;"
               accesskey="&gdata.privacy.default.accesskey;"
               type="radio"
               privacy="DEFAULT"
               provider="gdata"
               oncommand="editPrivacy(this)"/>
   </menupopup>
 
-  <statusbarpanel id="status-privacy">
-    <hbox id="gdata-status-privacy-default-box"
-          insertbefore="status-privacy-public-box,status-privacy-private-box"
-          privacy="DEFAULT"
-          provider="gdata"/>
-  </statusbarpanel>
+  <hbox id="status-privacy" class="statusbarpanel" />
 </overlay>
--- a/chat/content/browserRequest.xul
+++ b/chat/content/browserRequest.xul
@@ -27,17 +27,20 @@
   <hbox id="header">
     <image id="headerImage" src="chrome://chat/skin/prpl-generic/icon32.png"/>
     <vbox>
     <label id="headerLabel"/>
     <description id="headerMessage"/>
     </vbox>
   </hbox>
   <browser type="content" src="about:blank" id="requestFrame" flex="1"/>
-  <statusbar>
+  <hbox class="statusbar">
     <statusbarpanel id="security-display" crop="end" flex="1"/>
     <statusbarpanel id="security-status" crop="end" collapsed="true"/>
-    <statusbarpanel class="statusbarpanel-progress" collapsed="true" id="statusbar-status">
+    <hbox id="statusbar-status" class="statusbarpanel statusbarpanel-progress" collapsed="true">
       <html:progress class="progressmeter-statusbar" id="statusbar-icon" value="0" max="100"/>
-    </statusbarpanel>
+    </hbox>
     <statusbarpanel id="security-button" class="statusbarpanel-iconic"/>
-  </statusbar>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
+  </hbox>
 </window>
--- a/chat/themes/browserRequest.css
+++ b/chat/themes/browserRequest.css
@@ -1,13 +1,13 @@
 /* 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/. */
 
-statusbar {
+.statusbar {
   font-weight: bold;
   height: 2em;
 }
 #security-button {
   width: 20px;
   padding: 0;
   margin: 0;
 }
new file mode 100644
--- /dev/null
+++ b/common/bindings/generalBindings.js
@@ -0,0 +1,34 @@
+/* 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/. */
+
+/* global MozXULElement */
+
+class MozStatusbarpanel extends MozXULElement {
+  static get observedAttributes() {
+    return ["label"];
+  }
+
+  connectedCallback() {
+    this._updateAttributes();
+  }
+
+  attributeChangedCallback() {
+    this._updateAttributes();
+  }
+
+  set label(val) {
+    this.setAttribute("label", val);
+    return val;
+  }
+
+  get label() {
+    return this.getAttribute("label");
+  }
+
+  _updateAttributes() {
+    this.textContent = this.label || "";
+  }
+}
+
+customElements.define("statusbarpanel", MozStatusbarpanel);
--- a/common/bindings/generalBindings.xml
+++ b/common/bindings/generalBindings.xml
@@ -5,45 +5,16 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <bindings id="generalBindings"
    xmlns="http://www.mozilla.org/xbl"
    xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    xmlns:xbl="http://www.mozilla.org/xbl">
 
-  <binding id="statusbar" role="xul:statusbar">
-    <content>
-      <children/>
-      <xul:statusbarpanel class="statusbar-resizerpanel">
-        <xul:resizer dir="bottomend"/>
-      </xul:statusbarpanel>
-    </content>
-  </binding>
-
-  <binding id="statusbarpanel" display="xul:button">
-    <content>
-      <children>
-        <xul:label xbl:inherits="value=label,crop" crop="right" flex="1"/>
-      </children>
-    </content>
-
-    <implementation>
-      <property name="label"
-                onget="return this.getAttribute('label');"
-                onset="this.setAttribute('label',val); return val;"/>
-      <property name="image"
-                onget="return this.getAttribute('image');"
-                onset="this.setAttribute('image',val); return val;"/>
-      <property name="src"
-                onget="return this.getAttribute('src');"
-                onset="this.setAttribute('src',val); return val;"/>
-    </implementation>
-  </binding>
-
   <binding id="menu-vertical" display="xul:menu"
            extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
     <content>
       <children includes="observes|template|menupopup|panel|tooltip"/>
       <xul:hbox flex="1" align="center">
         <xul:vbox flex="1" align="center">
           <xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label,consumeanchor"/>
           <xul:label class="toolbarbutton-text" crop="right" flex="1"
--- a/common/content/customElements.js
+++ b/common/content/customElements.js
@@ -3,12 +3,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 for (let script of [
   "chrome://messenger/content/mailWidgets.js",
+  "chrome://messenger/content/generalBindings.js",
   "chrome://messenger/content/statuspanel.js",
 ]) {
   Services.scriptloader.loadSubScript(script, window);
 }
--- a/editor/ui/composer/content/editor.xul
+++ b/editor/ui/composer/content/editor.xul
@@ -368,20 +368,23 @@
              tooltiptext="&PreviewMode.tooltip;"
              command="cmd_PreviewMode"/>
       </tabs>
     </tabbox>
 
   </vbox> <!-- appcontent -->
 </hbox><!-- sidebar-parent -->
 
-    <!-- Some of this is from globarOverlay.xul -->
-    <statusbar class="chromeclass-status" id="status-bar">
+    <!-- Some of this is from globalOverlay.xul -->
+    <hbox class="statusbar chromeclass-status" id="status-bar">
       <statusbarpanel id="component-bar"/>
-      <statusbarpanel id="structToolbar" flex="1" pack="end">
-	    <label id="structSpacer" value="" flex="1"/>
-      </statusbarpanel>
-      <statusbarpanel class="statusbarpanel-iconic" id="offline-status"/>
-    </statusbar>
+      <hbox id="structToolbar" class="statusbarpanel" flex="1" pack="end">
+        <label id="structSpacer" value="" flex="1"/>
+      </hbox>
+      <statusbarpanel id="offline-status" class="statusbarpanel-iconic"/>
+      <hbox class="statusbarpanel statusbar-resizerpanel">
+        <resizer dir="bottomend"/>
+      </hbox>
+    </hbox>
 
 
 
 </window>
--- a/editor/ui/composer/content/editorTasksOverlay.xul
+++ b/editor/ui/composer/content/editorTasksOverlay.xul
@@ -14,19 +14,19 @@
   <keyset id="tasksKeys">
     <key id="key_editor" key="&editorCmd.commandkey;" command="Tasks:Editor" modifiers="accel"/>
   </keyset>
 
   <commandset id="tasksCommands">
     <command id="Tasks:Editor" oncommand="toEditor();"/>
   </commandset>
 
-  <statusbarpanel id="component-bar">
+  <hbox id="component-bar" class="statusbarpanel">
     <toolbarbutton class="taskbutton" id="mini-comp" command="Tasks:Editor"
                    tooltiptext="&taskComposer.tooltip;" insertafter="mini-nav"/>
-  </statusbarpanel>
+  </hbox>
 
   <menupopup id="windowPopup">
     <menuitem label="&editorCmd.label;" accesskey="&editorCmd.accesskey;" key="key_editor" command="Tasks:Editor" id="tasksMenuEditor" insertafter="IMMenuItem,tasksMenuNavigator" class="menuitem-iconic icon-composer16 menu-iconic"/>
   </menupopup>
 
 </overlay>
 
--- a/mail/base/content/ABSearchDialog.xul
+++ b/mail/base/content/ABSearchDialog.xul
@@ -177,16 +177,19 @@
                 accesskey="&composeButton.accesskey;"
                 command="cmd_compose"/>
         <button label="&deleteCardButton.label;"
                 accesskey="&deleteCardButton.accesskey;"
                 command="cmd_deleteCard"/>
       </hbox>
     </vbox>
 
-  <statusbar class="chromeclass-status" id="status-bar">
+  <hbox id="status-bar" class="statusbar chromeclass-status">
     <statusbarpanel id="statusText" crop="right" flex="1"/>
-    <statusbarpanel class="statusbarpanel-progress" id="statusbar-progresspanel">
+    <hbox id="statusbar-progresspanel" class="statusbarpanel statusbarpanel-progress">
       <html:progress class="progressmeter-statusbar" id="statusbar-icon" value="0" max="100"/>
-    </statusbarpanel>
-  </statusbar>
+    </hbox>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
+  </hbox>
 
 </window>
--- a/mail/base/content/FilterListDialog.xul
+++ b/mail/base/content/FilterListDialog.xul
@@ -169,17 +169,20 @@
 
         </vbox>
       </row>
     </rows>
   </grid>
 
   <separator class="thin"/>
 
-  <statusbar class="chromeclass-status" id="status-bar">
+  <hbox id="status-bar" class="statusbar chromeclass-status">
     <statusbarpanel id="statusText" flex="1" crop="right"/>
-    <statusbarpanel class="statusbarpanel-progress" collapsed="true" id="statusbar-progresspanel">
+    <hbox id="statusbar-progresspanel" class="statusbarpanel statusbarpanel-progress" collapsed="true">
       <html:progress class="progressmeter-statusbar" id="statusbar-icon" value="0" max="100"/>
-    </statusbarpanel>
-  </statusbar>
+    </hbox>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
+  </hbox>
 
 </window>
 
--- a/mail/base/content/SearchDialog.xul
+++ b/mail/base/content/SearchDialog.xul
@@ -199,16 +199,19 @@
 
       <button label="&deleteButton.label;" id="deleteButton" command="button_delete" accesskey="&deleteButton.accesskey;"/>
       <button label="&openInFolder.label;" id="openInFolderButton" command="open_in_folder_button" accesskey="&openInFolder.accesskey;" />
       <button label="&saveAsVFButton.label;" id="saveAsVFButton" command="saveas_vf_button" accesskey="&saveAsVFButton.accesskey;" />
       <spacer flex="1" />
     </hbox>
   </vbox>
 
-  <statusbar class="chromeclass-status" id="status-bar">
+  <hbox id="status-bar" class="statusbar chromeclass-status">
     <statusbarpanel id="statusText" crop="right" flex="1"/>
-    <statusbarpanel class="statusbarpanel-progress" collapsed="true" id="statusbar-progresspanel">
+    <hbox id="statusbar-progresspanel" class="statusbarpanel statusbarpanel-progress" collapsed="true">
       <html:progress class="progressmeter-statusbar" id="statusbar-icon" value="0" max="100"/>
-    </statusbarpanel>
-  </statusbar>
+    </hbox>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
+  </hbox>
 
 </window>
--- a/mail/base/content/bindings.css
+++ b/mail/base/content/bindings.css
@@ -77,16 +77,8 @@ textbox[type="number"] {
 
 spinbuttons {
   -moz-binding: url("chrome://messenger/content/spinbuttons.xml#spinbuttons");
 }
 
 .spinbuttons-button {
   -moz-user-focus: ignore;
 }
-
-statusbar {
-  -moz-binding: url("chrome://messenger/content/generalBindings.xml#statusbar");
-}
-
-statusbarpanel {
-  -moz-binding: url("chrome://messenger/content/generalBindings.xml#statusbarpanel");
-}
--- a/mail/base/content/mainStatusbar.inc
+++ b/mail/base/content/mainStatusbar.inc
@@ -1,21 +1,20 @@
 # 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/.
 
     <hbox id="statusTextBox" ondblclick="openActivityMgr();" flex="1">
-      <statusbarpanel>
+      <hbox class="statusbar-progresspanel">
         <toolbarbutton id="offline-status" oncommand="MailOfflineMgr.toggleOfflineStatus();"/>
-      </statusbarpanel>
+      </hbox>
       <statusbarpanel id="statusText" label="&statusText.label;" flex="1"/>
-      <statusbarpanel class="statusbarpanel-progress" collapsed="true" id="statusbar-progresspanel">
+      <hbox id="statusbar-progresspanel" class="statusbar-progresspanel statusbarpanel-progress" collapsed="true">
         <html:progress class="progressmeter-statusbar" id="statusbar-icon" value="0" max="100"/>
-      </statusbarpanel>
-      <statusbarpanel class="statusbarpanel-progress"
-                      id="quotaPanel" hidden="true">
+      </hbox>
+      <hbox id="quotaPanel" class="statusbar-progresspanel statusbarpanel-progress" hidden="true">
         <stack>
           <html:progress id="quotaMeter" class="progressmeter-statusbar" value="0" max="100"/>
           <label id="quotaLabel"
                  onclick="gFolderTreeController.editFolder('QuotaTab');" />
         </stack>
-      </statusbarpanel>
+      </hbox>
     </hbox>
--- a/mail/base/content/messageWindow.xul
+++ b/mail/base/content/messageWindow.xul
@@ -226,12 +226,15 @@
     </vbox>
   </hbox>
   <panel id="customizeToolbarSheetPopup" noautohide="true">
     <iframe id="customizeToolbarSheetIFrame"
             style="&dialog.dimensions;"
             hidden="true"/>
   </panel>
 
-  <statusbar class="chromeclass-status" id="status-bar">
+  <hbox id="status-bar" class="statusbar chromeclass-status">
 #include mainStatusbar.inc
-  </statusbar>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
+  </hbox>
 </window>
--- a/mail/base/content/messenger.css
+++ b/mail/base/content/messenger.css
@@ -600,25 +600,25 @@ preftab:root /* override :root */ {
   .webextension-menuitem {
     list-style-image: var(--webextension-menuitem-image-2x, inherit) !important;
   }
 }
 
 /* Status bar */
 
 %ifdef XP_MACOSX
-statusbar {
+.statusbar {
   padding-right: 14px;
 }
 
 .statusbar-resizerpanel {
   display: none;
 }
 %else
-window[sizemode="maximized"] statusbarpanel.statusbar-resizerpanel {
+window[sizemode="maximized"] .statusbar-resizerpanel {
   visibility: collapse;
 }
 %endif
 
 /* Status panel */
 
 statuspanel {
   position: fixed;
--- a/mail/base/content/messenger.xul
+++ b/mail/base/content/messenger.xul
@@ -783,16 +783,16 @@
   <panel id="customizeToolbarSheetPopup" noautohide="true">
     <iframe id="customizeToolbarSheetIFrame"
             style="&dialog.dimensions;"
             hidden="true"/>
   </panel>
 
   <notificationbox id="mail-notification-box" notificationside="bottom"/>
   <statuspanel id="statusbar-display"/>
-  <statusbar id="status-bar" class="chromeclass-status">
+  <hbox id="status-bar" class="statusbar chromeclass-status">
 #include mainStatusbar.inc
     <statusbarpanel id="unreadMessageCount"/>
     <statusbarpanel id="totalMessageCount"/>
-  </statusbar>
+  </hbox>
 
 </window>
 
--- a/mail/base/jar.mn
+++ b/mail/base/jar.mn
@@ -31,16 +31,17 @@ messenger.jar:
     content/messenger/customizeToolbar.css          (../../common/src/customizeToolbar.css)
     content/messenger/customizeToolbar.js           (../../common/src/customizeToolbar.js)
 *   content/messenger/customizeToolbar.xul          (../../common/src/customizeToolbar.xul)
     content/messenger/viewSource.css                (../../common/src/viewSource.css)
     content/messenger/viewSource.js                 (../../common/src/viewSource.js)
 *   content/messenger/viewSource.xul                (../../common/src/viewSource.xul)
 *   content/messenger/datetimepicker.xml            (../../common/bindings/datetimepicker.xml)
     content/messenger/generalBindings.xml           (../../common/bindings/generalBindings.xml)
+    content/messenger/generalBindings.js            (../../common/bindings/generalBindings.js)
     content/messenger/menubutton.xml                (../../common/bindings/menubutton.xml)
     content/messenger/menulist.css                  (../../common/bindings/menulist.css)
     content/messenger/menulist.xml                  (../../common/bindings/menulist.xml)
     content/messenger/notificationbox.xml           (../../common/bindings/notificationbox.xml)
     content/messenger/numberbox.xml                 (../../common/bindings/numberbox.xml)
     content/messenger/spinbuttons.xml               (../../common/bindings/spinbuttons.xml)
 *   content/messenger/textbox.xml                   (../../common/bindings/textbox.xml)
 *   content/messenger/toolbar.xml                   (../../common/bindings/toolbar.xml)
--- a/mail/components/addrbook/content/addressbook.xul
+++ b/mail/components/addrbook/content/addressbook.xul
@@ -905,12 +905,15 @@
     </vbox>
   </hbox>
   <panel id="customizeToolbarSheetPopup" noautohide="true">
     <iframe id="customizeToolbarSheetIFrame"
             style="&dialog.dimensions;"
             hidden="true"/>
   </panel>
 
-  <statusbar id="status-bar" class="chromeclass-status">
+  <statusbar id="status-bar" class="statusbar chromeclass-status">
     <statusbarpanel id="statusText" flex="1" value="&statusText.label;"/>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
   </statusbar>
 </window>
--- a/mail/components/compose/content/messengercompose.xul
+++ b/mail/components/compose/content/messengercompose.xul
@@ -2076,39 +2076,42 @@
   </panel>
 
   <hbox>
     <notificationbox id="attachmentNotificationBox"
                      flex="1"
                      notificationside="bottom"/>
   </hbox>
 
-  <statusbar id="status-bar" class="chromeclass-status">
+  <hbox id="status-bar" class="statusbar chromeclass-status">
     <statusbarpanel id="statusText" flex="1"/>
-    <statusbarpanel id="statusbar-progresspanel"
-                    class="statusbarpanel-progress"
-                    collapsed="true">
+    <hbox id="statusbar-progresspanel"
+          class="statusbarpanel statusbarpanel-progress"
+          collapsed="true">
       <html:progress id="compose-progressmeter" class="progressmeter-statusbar" value="0" max="100"/>
-    </statusbarpanel>
-    <statusbarpanel class="statusbarpanel-iconic"
-                    collapsed="true"
-                    id="signing-status"
-                    oncommand="showMessageComposeSecurityStatus();">
+    </hbox>
+    <hbox id="signing-status"
+          class="statusbarpanel statusbarpanel-iconic"
+          collapsed="true"
+          oncommand="showMessageComposeSecurityStatus();">
       <image/>
-    </statusbarpanel>
-    <statusbarpanel class="statusbarpanel-iconic"
-                    collapsed="true"
-                    id="encryption-status"
-                    oncommand="showMessageComposeSecurityStatus();">
+    </hbox>
+    <hbox id="encryption-status"
+          class="statusbarpanel statusbarpanel-iconic"
+          collapsed="true"
+          oncommand="showMessageComposeSecurityStatus();">
       <image/>
-    </statusbarpanel>
+    </hbox>
     <statusbarpanel id="encodingStatusPanel" tooltiptext="&encodingStatusPanel.tooltip;"/>
-    <statusbarpanel id="spellCheckStatusPanel">
+    <hbox id="spellCheckStatusPanel" class="statusbarpanel">
       <toolbarbutton id="languageStatusButton"
                      tooltiptext="&languageStatusButton.tooltip;"
                      oncommand="showPopupById('languageMenuList',
                                               'languageStatusButton',
                                               'before_start');">
       </toolbarbutton>
-    </statusbarpanel>
-  </statusbar>
+    </hbox>
+    <hbox class="statusbarpanel statusbar-resizerpanel">
+      <resizer dir="bottomend"/>
+    </hbox>
+  </hbox>
 
 </window>
--- a/mail/themes/linux/mail/messenger.css
+++ b/mail/themes/linux/mail/messenger.css
@@ -696,30 +696,31 @@ treechildren::-moz-tree-cell-text {
 
 /* Fix to show the menulist-dropmarker under newer GTK3 versions */
 menulist[editable="true"] > .menulist-dropmarker {
   min-width: 2em;
 }
 
 /* Status bar */
 
-statusbar {
+.statusbar {
   -moz-appearance: statusbar;
   min-height: 22px;
 }
 
-statusbar:-moz-lwtheme {
+.statusbar:-moz-lwtheme {
   -moz-appearance: none;
 }
 
-statusbar:-moz-lwtheme-brighttext {
+.statusbar:-moz-lwtheme-brighttext {
   --tabs-border-color: hsla(0,0%,60%,.4);
 }
 
-statusbarpanel {
+statusbarpanel,
+.statusbarpanel {
   -moz-appearance: none;
   -moz-box-align: center;
   -moz-box-pack: center;
   padding: 0 4px;
 }
 
 .statusbar-resizerpanel {
   -moz-box-align: end;
--- a/mail/themes/osx/mail/messenger.css
+++ b/mail/themes/osx/mail/messenger.css
@@ -656,41 +656,42 @@ button[type="menu-button"] > dropmarker 
 }
 
 /* Status bar */
 
 #status-bar:-moz-lwtheme  {
   padding-top: 1px;
 }
 
-statusbar {
+.statusbar {
   min-width: 1px; /* DON'T DELETE!
   Prevents hiding of scrollbars in browser when window is made smaller.*/
   min-height: 15px !important;
   margin: 0 !important;
   /* need to use padding-inline-end when/if bug 631729 gets fixed: */
   padding: 0 16px 1px 1px;
   -moz-appearance: statusbar;
   text-shadow: rgba(255, 255, 255, 0.4) 0 1px;
 }
 
-statusbarpanel {
+statusbarpanel,
+.statusbarpanel {
   -moz-box-align: center;
   -moz-box-pack: center;
   padding: 0 4px;
 }
 
-statusbar:-moz-lwtheme {
+.statusbar:-moz-lwtheme {
   -moz-appearance: none;
   background: none;
   border-style: none;
   text-shadow: inherit;
 }
 
-statusbar:-moz-lwtheme-brighttext {
+.statusbar:-moz-lwtheme-brighttext {
   --tabs-border-color: hsla(0,0%,60%,.4);
 }
 
 /* Status panel */
 
 .statusbarpanel-iconic {
   padding: 0;
 }
--- a/mail/themes/windows/mail/compacttheme.css
+++ b/mail/themes/windows/mail/compacttheme.css
@@ -58,17 +58,17 @@
 
   #navigation-toolbox {
     background-color: transparent;
   }
 }
 
 @media (-moz-os-version: windows-win7),
        (-moz-os-version: windows-win8) {
-  #messengerWindow > statusbar {
+  #messengerWindow > .statusbar {
     background-color: var(--lwt-accent-color);
   }
 
   @media (-moz-windows-compositor) {
     #messengerWindow {
       background: transparent !important;
     }
   }
--- a/mail/themes/windows/mail/mailWindow1.css
+++ b/mail/themes/windows/mail/mailWindow1.css
@@ -737,17 +737,17 @@ treechildren::-moz-tree-cell-text(dummy)
     }
 
     #messengerWindow[sizemode=normal] #mail-toolbar-menubar2 {
       border-right: 1px solid var(--glassShadowColor);
       border-left: 1px solid var(--glassShadowColor);
       background-clip: padding-box;
     }
 
-    #messengerWindow[sizemode=normal] statusbar {
+    #messengerWindow[sizemode=normal] .statusbar {
       margin-top: -1px;
       border: 1px solid var(--glassShadowColor);
       border-top-color: threedshadow;
       border-radius: 1px 1px 0 0;
       background-clip: padding-box;
     }
   }
 }
--- a/mail/themes/windows/mail/messenger.css
+++ b/mail/themes/windows/mail/messenger.css
@@ -726,66 +726,64 @@ menulist > menupopup:not([type="folder"]
   #task-addition-box {
     border-top: none;
     background-color: -moz-dialog;
   }
 }
 
 /* Status bar */
 
-statusbar {
+.statusbar {
   -moz-appearance: statusbar;
   min-height: 22px;
 }
 
-statusbar:-moz-lwtheme {
+.statusbar:-moz-lwtheme {
   -moz-appearance: none;
 }
 
-statusbar:-moz-lwtheme-brighttext {
+.statusbar:-moz-lwtheme-brighttext {
   --tabs-border-color: hsla(0,0%,60%,.4);
 }
 
-statusbarpanel {
+statusbarpanel,
+.statusbarpanel {
   -moz-appearance: none;
   -moz-box-align: center;
   -moz-box-pack: center;
   border-inline-end: 1px solid ThreeDLightShadow;
   padding: 0 4px;
 }
 
-statusbarpanel:-moz-lwtheme {
+statusbarpanel:-moz-lwtheme,
+.statsubarpanel:-moz-lwtheme {
   border-inline-end-color: var(--tabs-border-color);
 }
 
 .statusbar-resizerpanel {
   -moz-box-align: end;
   -moz-box-pack: end;
   -moz-appearance: resizerpanel;
   padding: 0;
   border-inline-end-width: 0;
 }
 
-statusbarpanel label {
-  margin-top: 0;
-  margin-bottom: 0;
-}
-
 @media (-moz-os-version: windows-win7) and (-moz-windows-default-theme),
        (-moz-os-version: windows-win8) and (-moz-windows-default-theme) {
   #status-bar:not(:-moz-lwtheme) {
     -moz-appearance: none;
     border-style: none;
     border-top: 1px solid ThreeDShadow;
     background-color: var(--toolbar-bgcolor);
   }
 }
 
 @media (-moz-windows-classic) {
-  statusbarpanel:not(:-moz-lwtheme) {
+  statusbarpanel:not(:-moz-lwtheme),
+  .statusbarpanel:not(:-moz-lwtheme) {
     -moz-appearance: statusbarpanel;
   }
 }
 
 /* Status panel */
 
 .statusbarpanel-iconic {
   padding: 0 1px;
--- a/mailnews/base/content/subscribe.xul
+++ b/mailnews/base/content/subscribe.xul
@@ -147,17 +147,19 @@
               </hbox>
             </tabpanel>
           </tabpanels>
         </tabbox>
       </row>
       <row>
         <hbox id="statusContainerBox">
            <statusbarpanel id="statusText" crop="right" flex="1"/>
-           <statusbarpanel class="statusbarpanel-progress" collapsed="true" id="statusbar-progresspanel">
+           <hbox id="statusbar-progresspanel"
+                 class="statusbarpanel statusbarpanel-progress"
+                 collapsed="true">
              <html:progress class="progressmeter-statusbar" id="statusbar-icon" value="0" max="100"/>
-           </statusbarpanel>
+           </hbox>
          </hbox>
          <hbox/>
       </row>
     </rows>
   </grid>
 </dialog>