diff --git a/content/treestyletab/res/tabFx2Compatible.css b/content/treestyletab/res/tabFx2Compatible.css index 8b412ecd..3779f776 100644 --- a/content/treestyletab/res/tabFx2Compatible.css +++ b/content/treestyletab/res/tabFx2Compatible.css @@ -14,88 +14,93 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -:root[tabFx2Compatible="7"] +:root[tabFx2Compatible="8"] .tabbrowser-tab { - -moz-binding: url(tabFx2Compatible.xml#tabbrowser-tab) !important; + -moz-binding: url(tabFx2Compatible.xml#tabbrowser-tab-3) !important; } -:root[tabFx2Compatible="7"]:not([tabFx2Compatible-flags~="png-throbber"]) +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="separate-tabContextMenu"] + .tabbrowser-tab { + -moz-binding: url(tabFx2Compatible.xml#tabbrowser-tab-4) !important; +} + +:root[tabFx2Compatible="8"]:not([tabFx2Compatible-flags~="png-throbber"]) .tabbrowser-tab[busy] > hbox > stack > .tab-icon-image { list-style-image: url("chrome://global/skin/throbber/Throbber-small.gif") !important; opacity: 0.6; } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="png-throbber"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="png-throbber"] .tabbrowser-tab[busy] > hbox > stack > .tab-icon-image { list-style-image: url("chrome://global/skin/icons/loading_16.png") !important; } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="mac"][tabFx2Compatible-flags~="png-throbber"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="mac"][tabFx2Compatible-flags~="png-throbber"] .tabbrowser-tab .tab-icon-image { list-style-image: url("chrome://global/skin/tree/item.png"); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="mac"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="mac"] .tabbrowser-tab:not(:hover):not([selected="true"]) .tab-icon-image { opacity: 0.6; } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy] > hbox > stack > .tab-icon-image { list-style-image: url("chrome://browser/skin/tabbrowser/progress.png") !important; -moz-image-region: rect(0, 16px, 16px, 0); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][stalled] > hbox > stack > .tab-icon-image { list-style-image: url("chrome://browser/skin/tabbrowser/progress-pulsing.png") !important; } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][progress="1"] > hbox > stack > .tab-icon-image { -moz-image-region: rect(0, 32px, 16px, 16px); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][progress="2"] > hbox > stack > .tab-icon-image { -moz-image-region: rect(0, 48px, 16px, 32px); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][progress="3"] > hbox > stack > .tab-icon-image { -moz-image-region: rect(0, 64px, 16px, 48px); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][progress="4"] > hbox > stack > .tab-icon-image { -moz-image-region: rect(0, 80px, 16px, 64px); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][progress="5"] > hbox > stack > .tab-icon-image { -moz-image-region: rect(0, 96px, 16px, 80px); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][progress="6"] > hbox > stack > .tab-icon-image { -moz-image-region: rect(0, 112px, 16px, 96px); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][progress="7"] > hbox > stack > .tab-icon-image { -moz-image-region: rect(0, 128px, 16px, 112px); } -:root[tabFx2Compatible="7"][tabFx2Compatible-flags~="pie"] +:root[tabFx2Compatible="8"][tabFx2Compatible-flags~="pie"] .tabbrowser-tab[busy][progress="8"] > hbox > stack > .tab-icon-image { -moz-image-region: rect(0, 144px, 16px, 128px); } -:root[tabFx2Compatible="7"] +:root[tabFx2Compatible="8"] .tabbrowser-tab[selected="true"]:focus > hbox > .tab-text { border: 1px dotted -moz-DialogText; } -:root[tabFx2Compatible="7"] +:root[tabFx2Compatible="8"] .tabbrowser-tab[pinned="true"] .tab-text { visibility: collapse !important; } -:root[tabFx2Compatible="7"] +:root[tabFx2Compatible="8"] .tabbrowser-tab[pinned="true"] > .tab-image-left, -:root[tabFx2Compatible="7"] +:root[tabFx2Compatible="8"] .tabbrowser-tab[pinned="true"] > .tab-image-right { display: none !important; } diff --git a/content/treestyletab/res/tabFx2Compatible.xml b/content/treestyletab/res/tabFx2Compatible.xml index b456f6ba..c68404a8 100644 --- a/content/treestyletab/res/tabFx2Compatible.xml +++ b/content/treestyletab/res/tabFx2Compatible.xml @@ -25,7 +25,7 @@ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl"> - @@ -42,4 +42,21 @@ + + + + + + + + + + + + + + + diff --git a/content/treestyletab/res/tabFx2Compatible.xul b/content/treestyletab/res/tabFx2Compatible.xul index edad1b7b..e4d9454b 100644 --- a/content/treestyletab/res/tabFx2Compatible.xul +++ b/content/treestyletab/res/tabFx2Compatible.xul @@ -19,7 +19,7 @@ window.addEventListener('DOMContentLoaded', function() { window.removeEventListener('DOMContentLoaded', arguments.callee, true); - const currentRevision = 7; + const currentRevision = 8; var b = document.getElementById('content'); if (!b || b.localName != 'tabbrowser') return; @@ -38,6 +38,15 @@ window.addEventListener('DOMContentLoaded', function() { } } + const Cc = Components.classes; + const Ci = Components.interfaces; + + const XULAppInfo = Cc['@mozilla.org/xre/app-info;1'] + .getService(Ci.nsIXULAppInfo) + .QueryInterface(Ci.nsIXULRuntime); + const Comparator = Cc['@mozilla.org/xpcom/version-comparator;1'] + .getService(Ci.nsIVersionComparator); + var url = window.getComputedStyle(b.selectedTab, '').getPropertyValue('-moz-binding'); url = url.match(/url\((.+)\)/); if (url) { @@ -64,12 +73,14 @@ window.addEventListener('DOMContentLoaded', function() { case 'chrome://browser/content/tabbrowser.xml#tabbrowser-tab': // built-in root.setAttribute('tabFx2Compatible', currentRevision); var flags = []; - if (navigator.platform.toLowerCase().indexOf('mac') > -1) + if (XULAppInfo.OS.toLowerCase().indexOf('darwin') > -1) flags.push('mac'); - if ('nsPIPlacesDatabase' in Components.interfaces) + if (Comparator.compare(XULAppInfo.version, '3.1') >= 0) flags.push('png-throbber'); - if (b.mTabProgressListener.toSource().indexOf('_startStalledTimer') > -1) + if (Comparator.compare(XULAppInfo.version, '3.7a1') >= 0) flags.push('pie'); + if (Comparator.compare(XULAppInfo.version, '4.0b1') >= 0) + flags.push('separate-tabContextMenu'); root.setAttribute('tabFx2Compatible-flags', flags.join(' ')); break; }