[Pkg-mozext-commits] [tabmixplus] 77/123: Clean our overlay to Firefox preferences, fix some compatibility issues, when ghostery extensions and noia theme install main pane is blank

David Prévot taffit at moszumanska.debian.org
Wed Sep 17 21:16:28 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository tabmixplus.

commit 0b91b24803f347bb82eee658ec855a26a335abd9
Author: onemen <tabmix.onemen at gmail.com>
Date:   Thu Sep 4 22:00:30 2014 +0300

    Clean our overlay to Firefox preferences, fix some compatibility issues, when ghostery extensions and noia theme install main pane is blank
---
 chrome.manifest                                    |   5 +-
 chrome/content/preferences/links.js                |   6 +-
 .../preferences/overlay/incontentPreferences.xul   |  18 ++-
 chrome/content/preferences/overlay/main.xul        |  37 +++++
 chrome/content/preferences/overlay/preferences.css |   5 +
 chrome/content/preferences/overlay/preferences.xml |  36 +++++
 .../preferences/overlay/preferencesOverlay.js      | 152 ++++-----------------
 .../preferences/overlay/preferencesOverlay.xul     |  22 ---
 .../overlay/{tab_panel.xul => tabs.xul}            |  11 ++
 chrome/skin/preferencesOverlay.css                 |  26 +++-
 10 files changed, 162 insertions(+), 156 deletions(-)

diff --git a/chrome.manifest b/chrome.manifest
index 30a1681..d14a739 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -43,7 +43,10 @@ overlay   chrome://browser/content/browser.xul                      chrome://tab
 overlay   about:preferences                                         chrome://tabmixplus/content/preferences/overlay/incontentPreferences.xul  os=WINNT
 overlay   about:preferences                                         chrome://tabmixplus/content/preferences/overlay/incontentPreferences.xul  os=Darwin
 overlay   about:preferences#general                                 chrome://tabmixplus/content/preferences/overlay/incontentPreferences.xul  os=Linux
-overlay   chrome://browser/content/preferences/preferences.xul      chrome://tabmixplus/content/preferences/overlay/preferencesOverlay.xul
+overlay   chrome://browser/content/preferences/main.xul             chrome://tabmixplus/content/preferences/overlay/main.xul
+overlay   chrome://browser/content/preferences/tabs.xul             chrome://tabmixplus/content/preferences/overlay/tabs.xul
+style     chrome://browser/content/preferences/preferences.xul      chrome://tabmixplus/content/preferences/overlay/preferences.css
+
 overlay   chrome://mozapps/content/extensions/extensions.xul        chrome://tabmixplus/content/links/links.xul
 overlay   about:newtab                                              chrome://tabmixplus/content/links/newTab.xul
 overlay   chrome://mozapps/content/downloads/unknownContentType.xul chrome://tabmixplus/content/links/removeBlankTab.xul
diff --git a/chrome/content/preferences/links.js b/chrome/content/preferences/links.js
index 9cb290e..353e232 100644
--- a/chrome/content/preferences/links.js
+++ b/chrome/content/preferences/links.js
@@ -38,8 +38,10 @@ var gLinksPane = {
   singleWindow: function(enableSingleWindow) {
     function updateStatus(itemId, testVal, test, newVal) {
       var item = $(itemId);
-      if (test ? item.value == testVal : item.value != testVal)
-        item.value = newVal;
+      if (test ? item.value == testVal : item.value != testVal) {
+        let preference = $(item.getAttribute("preference"));
+        preference.value = newVal;
+      }
     }
 
     if (enableSingleWindow) {
diff --git a/chrome/content/preferences/overlay/incontentPreferences.xul b/chrome/content/preferences/overlay/incontentPreferences.xul
index 13115f3..46db2dd 100644
--- a/chrome/content/preferences/overlay/incontentPreferences.xul
+++ b/chrome/content/preferences/overlay/incontentPreferences.xul
@@ -12,13 +12,11 @@
 <overlay id="tmp_incontentPreferencesOverlay"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
-  <script type="application/javascript" src="chrome://tabmixplus/content/utils.js"/>
   <script type="application/javascript" src="preferencesOverlay.js"/>
   <script type="application/javascript">
-      var tabmixButton_label = "&options.main.sessionbutton.label;…";
       window.addEventListener("load", function TMP_onLoad_preverenceOverlay(aEvent) {
         aEvent.currentTarget.removeEventListener("load", TMP_onLoad_preverenceOverlay, true);
-        gTabMix_preferencesOverlay.incontentInit(aEvent);
+        gTabMix_preferencesOverlay.incontentInit();
       }, true);
   </script>
 
@@ -30,8 +28,22 @@
                   name="extensions.tabmix.tabs.warnOnClose"          type="bool"/>
       <preference id="extensions.tabmix.protectedtabs.warnOnClose"
                   name="extensions.tabmix.protectedtabs.warnOnClose" type="bool"/>
+      <preference id="extensions.tabmix.singleWindow"
+                  name="extensions.tabmix.singleWindow"              type="bool"
+                  onchange="gTabMix_preferencesOverlay.setSingleWindowUI();"/>
+      <preference id="tabmix.sm"
+                  name="extensions.tabmix.sessions.manager"          type="bool"
+                  onchange="gTabMix_preferencesOverlay.onStartupPrefchanged();"/>
+      <preference id="tabmix.cr"
+                  name="extensions.tabmix.sessions.crashRecovery"    type="bool"
+                  onchange="gTabMix_preferencesOverlay.onStartupPrefchanged();"/>
     </preferences>
 
+    <button id="tabmixSessionManager"
+            label="&options.main.sessionbutton.label;…"
+            oncommand="gTabMix_preferencesOverlay.showTabmixOptions('paneSession');"
+            class="tabmixplus-button"/>
+
     <vbox id="tabmixplusBox" data-category="paneTabs" hidden="true" align="start">
       <button id="btn_tabmixplus" class="tabmixplus-button indent" style="height: 27px;"
               label="&page.header.title;…" oncommand="gTabMix_preferencesOverlay.showTabmixOptions();"/>
diff --git a/chrome/content/preferences/overlay/main.xul b/chrome/content/preferences/overlay/main.xul
new file mode 100644
index 0000000..0ee2cb8
--- /dev/null
+++ b/chrome/content/preferences/overlay/main.xul
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE overlay [
+<!ENTITY % tabmixplusDTD SYSTEM "chrome://tabmixplus/locale/tabmix.dtd">
+%tabmixplusDTD;
+]>
+
+<overlay id="TabmixMainPaneOverlay"
+         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+  <script type="application/javascript" src="preferencesOverlay.js"/>
+  <script type="application/javascript">
+      window.addEventListener("paneload", function mainPaneload(aEvent) {
+        aEvent.currentTarget.removeEventListener("paneload", mainPaneload, true);
+        gTabMix_preferencesOverlay.initMainPane();
+      }, true);
+  </script>
+
+  <prefpane id="paneMain">
+
+    <preferences id="mainPreferences">
+      <preference id="tabmix.sm"
+                  name="extensions.tabmix.sessions.manager"          type="bool"
+                  onchange="gTabMix_preferencesOverlay.onStartupPrefchanged();"/>
+      <preference id="tabmix.cr"
+                  name="extensions.tabmix.sessions.crashRecovery"    type="bool"
+                  onchange="gTabMix_preferencesOverlay.onStartupPrefchanged();"/>
+    </preferences>
+
+    <button id="tabmixSessionManager"
+            label="&options.main.sessionbutton.label;…"
+            oncommand="gTabMix_preferencesOverlay.showTabmixOptions('paneSession');"
+            class="tabmixplus-button"/>
+
+  </prefpane>
+
+</overlay>
diff --git a/chrome/content/preferences/overlay/preferences.css b/chrome/content/preferences/overlay/preferences.css
new file mode 100644
index 0000000..ad79ee3
--- /dev/null
+++ b/chrome/content/preferences/overlay/preferences.css
@@ -0,0 +1,5 @@
+
+prefwindow,
+prefwindow:root {
+  -moz-binding: url("chrome://tabmixplus/content/preferences/overlay/preferences.xml#tabmix-prefwindow") !important;
+}
diff --git a/chrome/content/preferences/overlay/preferences.xml b/chrome/content/preferences/overlay/preferences.xml
new file mode 100644
index 0000000..3a84c5a
--- /dev/null
+++ b/chrome/content/preferences/overlay/preferences.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+
+<bindings id="tabmix_preferences_bindings"
+          xmlns="http://www.mozilla.org/xbl"
+          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+          xmlns:xbl="http://www.mozilla.org/xbl">
+
+  <binding id="tabmix-prefwindow"
+           extends="chrome://global/content/bindings/preferences.xml#prefwindow">
+    <implementation>
+      <constructor>
+        <![CDATA[
+          // we call this from here to apply the changes to all dialog windows
+          // that are based on prefwindow
+          try {
+            Components.utils.import("resource://tabmixplus/Services.jsm");
+            window.Tabmix = { };
+            Tabmix._debugMode = false;
+            Services.scriptloader.loadSubScript("chrome://tabmixplus/content/changecode.js", Tabmix);
+            Tabmix.changeCode(window, "openLinkIn")._replace(
+              'var w = getTopWin();',
+              '$&\n' +
+              '  if (w && where == "window" && w.Tabmix.getSingleWindowMode())\n' +
+              '    where = "tab";\n'
+            ).toCode();
+          } catch(ex) {
+            TabmixSvc.console.log(
+                "TabMix :\n" +
+                "can't change openLinkIn from preferences.xml binding\n" + ex);
+          }
+        ]]>
+      </constructor>
+    </implementation>
+  </binding>
+
+</bindings>
diff --git a/chrome/content/preferences/overlay/preferencesOverlay.js b/chrome/content/preferences/overlay/preferencesOverlay.js
index 3d48936..b0ae0ed 100644
--- a/chrome/content/preferences/overlay/preferencesOverlay.js
+++ b/chrome/content/preferences/overlay/preferencesOverlay.js
@@ -1,8 +1,11 @@
 "use strict";
 
+Components.utils.import("resource://tabmixplus/Services.jsm");
+
 var gTabMix_preferencesOverlay = {
   id: function(id) {return document.getElementById(id);},
-  incontentInit: function gTabMix_preferencesOverlay_incontentInit(aEvent) {
+
+  incontentInit: function gTabMix_preferencesOverlay_incontentInit() {
     var box = this.id("linkTargeting");
     box.collapsed = true;
     box.parentNode.insertBefore(this.id("tabmixplusBox"), box);
@@ -19,7 +22,7 @@ var gTabMix_preferencesOverlay = {
     if (showTabBar)
       showTabBar.collapsed = true;
 
-    if (Tabmix.isVersion(260)) {
+    if (TabmixSvc.version(260)) {
       let boxes = ["tabmixplusBox", "btn_tabmixplus", "generalWindowOpenBox",
                    "warnOnCloseWindow", "warnOnCloseProtected", "hideTabbarBox"];
       boxes.forEach(function(id) {
@@ -31,89 +34,30 @@ var gTabMix_preferencesOverlay = {
       }, this)
     }
 
-    this.onPaneMainLoad();
+    this.initMainPane();
     setTimeout(function(self) {
       self.initPaneTabsOptions();
     }, 0, this);
   },
 
-   lastSelected: "",
-   currentPane: "",
-   init: function gTabMix_preferencesOverlay_init(aEvent) {
-      var prefWindow = aEvent.target.documentElement;
-      this.currentPane = prefWindow.lastSelected;
-      this.onPaneLoad(prefWindow.lastSelected);
-
-      Tabmix.changeCode(prefWindow, "prefWindow.showPane")._replace(
-        'if (!aPaneElement.loaded) {', ''
-      )._replace(
-        'OverlayLoadObserver.prototype',
-        'if (!aPaneElement.loaded) {\
-         $&'
-      )._replace(
-        'this._outer._selectPane(this._pane);',
-        '$& \
-         gTabMix_preferencesOverlay.onPaneLoad(this._pane.id);'
-      ).toCode();
-
-      Tabmix.changeCode(window, "openLinkIn")._replace(
-        'var w = getTopWin();',
-        '$& \
-         if (w && where == "window" && Tabmix.prefs.getBoolPref("singleWindow")) where = "tab";'
-      ).toCode();
-
-   },
-
-   onPaneLoad: function gTabMix_preferencesOverlay_onPaneLoad(aPaneID) {
-      this.lastSelected = this.currentPane;
-      switch (aPaneID) {
-         case "paneTabs":
-            this.loadOverlay();
-         break;
-         case "paneMain":
-            this.onPaneMainLoad();
-         break;
-         default:
-      }
-   },
-
 /* ........ paneTabs .............. */
-   loadOverlay: function () {
-      function OverlayLoadObserver() { }
-      OverlayLoadObserver.prototype = {
-         _outer: this,
-         observe: function (aSubject, aTopic, aData) {
-            this._outer._afterOverlayLoaded();
-         }
-      };
-      var obs = new OverlayLoadObserver();
-      document.loadOverlay("chrome://tabmixplus/content/preferences/overlay/tab_panel.xul", obs);
-   },
-
-   _afterOverlayLoaded: function () {
-      this.initPaneTabsOptions();
-
-      // fix panel height
-      var docElt = document.documentElement;
-      if (docElt._shouldAnimate && this.lastSelected == "paneTabs")
-        window.sizeToContent();
-      else {
-        let paneTabs = document.getElementById("paneTabs");
-        paneTabs._content.style.height = "";
-        docElt.lastSelected = this.lastSelected;
-        docElt._selectPane(paneTabs);
-      }
+   initPaneTabsOptions: function () {
+      this.id("_hideTabbar").value = this.id("extensions.tabmix.hideTabbar").value;
+      this.id("generalWindowOpen").value = this.id("browser.link.open_newwindow").value;
+      this.id("warnCloseMultiple").checked = this.id("extensions.tabmix.tabs.warnOnClose").value;
+      this.id("warnOnCloseWindow").checked = this.id("browser.tabs.warnOnClose").value;
+      this.id("warnOnCloseProtected").checked = this.id("extensions.tabmix.protectedtabs.warnOnClose").value;
+      this.setSingleWindowUI();
    },
 
-   initPaneTabsOptions: function () {
-      document.getElementById("_hideTabbar").value = document.getElementById("extensions.tabmix.hideTabbar").value;
-      document.getElementById("generalWindowOpen").value = document.getElementById("browser.link.open_newwindow").value;
-      document.getElementById("warnCloseMultiple").checked = document.getElementById("extensions.tabmix.tabs.warnOnClose").value;
-      document.getElementById("warnOnCloseWindow").checked = document.getElementById("browser.tabs.warnOnClose").value;
-      document.getElementById("warnOnCloseProtected").checked = document.getElementById("extensions.tabmix.protectedtabs.warnOnClose").value;
-      var singleWindowMode = Tabmix.prefs.getBoolPref("singleWindow");
-      if (singleWindowMode)
-         document.getElementById("linkTargetWindow").disabled = true;
+   setSingleWindowUI: function () {
+     var val = TabmixSvc.prefBranch.getBoolPref("singleWindow");
+     let item = this.id("linkTargetWindow");
+     item.disabled = val;
+     if (val)
+       item.setAttribute("style", "color: graytext !important; text-shadow: none !important;");
+     else
+       item.removeAttribute("style");
    },
 
    showTabmixOptions: function (panel) {
@@ -133,56 +77,20 @@ var gTabMix_preferencesOverlay = {
    },
 
 /* ........ paneMain .............. */
-   onPaneMainLoad: function () {
-     var button = document.getElementById("tabmixSessionManager");
-     if (button)
-       return;
-
-     if (!Tabmix.isVersion(180))
-     Tabmix.changeCode(gMainPane, "gMainPane.showAddonsMgr")._replace(
-       'openUILinkIn("about:addons", "window");',
-       'var w = Tabmix.getTopWin();\
-       if (w) w.BrowserOpenAddonsMgr();\
-       else $&', {silent: true}
-     ).toCode();
-
-     button = document.createElement("button");
-     button.id = "tabmixSessionManager";
-     button.setAttribute("label", tabmixButton_label);
-     button.setAttribute("oncommand", "gTabMix_preferencesOverlay.showTabmixOptions('paneSession');");
-     button.setAttribute("class", "tabmixplus-button");
-     var menuList = document.getElementById("browserStartupPage");
+   initMainPane: function () {
+     var menuList = this.id("browserStartupPage");
      var hBox = menuList.parentNode;
-     var spacer = document.createElement("spacer");
-     spacer.setAttribute("flex", "1");
-     hBox.insertBefore(spacer, menuList);
-     hBox.insertBefore(button, menuList);
-     hBox.classList.add("whenBrowserStartBox")
-
-     var preferences = document.getElementById("mainPreferences");
-     var preference = document.createElement("preference");
-     preference.setAttribute("id", "tabmix.sm");
-     preference.setAttribute("name", "extensions.tabmix.sessions.manager");
-     preference.setAttribute("type", "bool");
-     preference.setAttribute("onchange", "gTabMix_preferencesOverlay.onStartupPrefchanged();");
-     preferences.appendChild(preference);
-
-     preference = document.createElement("preference");
-     preference.setAttribute("id", "tabmix.cr");
-     preference.setAttribute("name", "extensions.tabmix.sessions.crashRecovery");
-     preference.setAttribute("type", "bool");
-     preference.setAttribute("onchange", "gTabMix_preferencesOverlay.onStartupPrefchanged();");
-     preferences.appendChild(preference);
+     menuList.parentNode.id = "whenBrowserStartBox";
+     hBox.insertBefore(this.id("tabmixSessionManager"), menuList);
      this.onStartupPrefchanged();
    },
 
    onStartupPrefchanged: function () {
-     var tabmixSession =  document.getElementById('tabmix.sm').value || document.getElementById('tabmix.cr').value;
-     document.getElementById("browserStartupPage").collapsed = tabmixSession;
-     var button = document.getElementById("tabmixSessionManager");
-     button.collapsed = !tabmixSession;
-     button.previousSibling.collapsed = !tabmixSession;
-     document.getElementById("startupGroup").setAttribute("tabmixbutton", tabmixSession);
+     var tabmixSession =  this.id('tabmix.sm').value || this.id('tabmix.cr').value;
+     if (tabmixSession)
+       this.id("whenBrowserStartBox").setAttribute("tabmixSession", true);
+     else
+       this.id("whenBrowserStartBox").removeAttribute("tabmixSession");
    }
 
 }
diff --git a/chrome/content/preferences/overlay/preferencesOverlay.xul b/chrome/content/preferences/overlay/preferencesOverlay.xul
deleted file mode 100644
index 8b9c8e1..0000000
--- a/chrome/content/preferences/overlay/preferencesOverlay.xul
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE overlay [
-<!ENTITY % pref-tabmixDTD SYSTEM "chrome://tabmixplus/locale/pref-tabmix.dtd" >
-%pref-tabmixDTD;
-<!ENTITY % tabmixplusDTD SYSTEM "chrome://tabmixplus/locale/tabmix.dtd">
-%tabmixplusDTD;
-]>
-
-<overlay id="tmpPreferencesOverlay"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-  <script type="application/javascript" src="chrome://tabmixplus/content/utils.js"/>
-  <script type="application/javascript" src="preferencesOverlay.js"/>
-  <script type="application/javascript">
-      var tabmixButton_label = "&options.main.sessionbutton.label;…";
-      window.addEventListener("load", function TMP_onLoad_preverenceOverlay(aEvent) {
-        aEvent.currentTarget.removeEventListener("load", TMP_onLoad_preverenceOverlay, true);
-        gTabMix_preferencesOverlay.init(aEvent);
-      }, true);
-  </script>
-</overlay>
diff --git a/chrome/content/preferences/overlay/tab_panel.xul b/chrome/content/preferences/overlay/tabs.xul
similarity index 82%
rename from chrome/content/preferences/overlay/tab_panel.xul
rename to chrome/content/preferences/overlay/tabs.xul
index f247c20..1beaac1 100644
--- a/chrome/content/preferences/overlay/tab_panel.xul
+++ b/chrome/content/preferences/overlay/tabs.xul
@@ -10,6 +10,14 @@
 <overlay id="TabsPaneOverlay"
          xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
+  <script type="application/javascript" src="preferencesOverlay.js"/>
+  <script type="application/javascript">
+      window.addEventListener("paneload", function tabsPaneload(aEvent) {
+        aEvent.currentTarget.removeEventListener("paneload", tabsPaneload, true);
+        gTabMix_preferencesOverlay.initPaneTabsOptions();
+      }, true);
+  </script>
+
   <prefpane id="paneTabs">
 
     <preferences id="tabsPreferences">
@@ -19,6 +27,9 @@
                   name="extensions.tabmix.tabs.warnOnClose"          type="bool"/>
       <preference id="extensions.tabmix.protectedtabs.warnOnClose"
                   name="extensions.tabmix.protectedtabs.warnOnClose" type="bool"/>
+      <preference id="extensions.tabmix.singleWindow"
+                  name="extensions.tabmix.singleWindow"              type="bool"
+                  onchange="gTabMix_preferencesOverlay.setSingleWindowUI();"/>
     </preferences>
 
     <hbox insertafter="tabsPreferences" align="center">
diff --git a/chrome/skin/preferencesOverlay.css b/chrome/skin/preferencesOverlay.css
index 8587f91..bbbb71f 100644
--- a/chrome/skin/preferencesOverlay.css
+++ b/chrome/skin/preferencesOverlay.css
@@ -9,17 +9,31 @@
   -moz-margin-end: 5px;
 }
 
-.whenBrowserStartBox {
+#startupGroup > hbox > .tabmixplus-button {
+  margin-top: 0px;
+  margin-bottom: 0px;
+}
+
+#whenBrowserStartBox {
   height: 33px;
 }
 
-#startupGroup > separator {
-  height: 6px;
+#whenBrowserStartBox[tabmixSession] > #tabmixSessionManager,
+#whenBrowserStartBox:not([tabmixSession]) > #browserStartupPage {
+  display: -moz-box;
 }
 
-#startupGroup > hbox > .tabmixplus-button {
-  margin-top: 0px;
-  margin-bottom: 0px;
+#whenBrowserStartBox:not([tabmixSession]) > #tabmixSessionManager,
+#whenBrowserStartBox[tabmixSession] > #browserStartupPage {
+  display: none;
+}
+
+#whenBrowserStartBox[tabmixSession] > label[control="browserStartupPage"] {
+  -moz-box-flex: 1;
+}
+
+#startupGroup > separator {
+  height: 6px;
 }
 
 .incontent_paneGeneral separator {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/tabmixplus.git



More information about the Pkg-mozext-commits mailing list