インデントの有効無効、折りたたみの有効無効について、水平・垂直それぞれのタブバーに別個に設定を保存できるようにした
git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@4666 599a83e7-65a4-db11-8015-0010dcdd6dc2
This commit is contained in:
parent
ee0a7e27cc
commit
fc33824e01
@ -25,7 +25,7 @@
|
||||
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/prefs.js
|
||||
*/
|
||||
(function() {
|
||||
const currentRevision = 1;
|
||||
const currentRevision = 2;
|
||||
|
||||
if (!('piro.sakura.ne.jp' in window)) window['piro.sakura.ne.jp'] = {};
|
||||
|
||||
@ -48,19 +48,29 @@
|
||||
},
|
||||
_Prefs : null,
|
||||
|
||||
getPref : function(aPrefstring)
|
||||
get DefaultPrefs()
|
||||
{
|
||||
if (!this._DefaultPrefs) {
|
||||
this._DefaultPrefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getDefaultBranch(null);
|
||||
}
|
||||
return this._DefaultPrefs;
|
||||
},
|
||||
_DefaultPrefs : null,
|
||||
|
||||
getPref : function(aPrefstring, aBranch)
|
||||
{
|
||||
if (!aBranch) aBranch = this.Prefs;
|
||||
try {
|
||||
switch (this.Prefs.getPrefType(aPrefstring))
|
||||
switch (aBranch.getPrefType(aPrefstring))
|
||||
{
|
||||
case this.Prefs.PREF_STRING:
|
||||
return decodeURIComponent(escape(this.Prefs.getCharPref(aPrefstring)));
|
||||
return decodeURIComponent(escape(aBranch.getCharPref(aPrefstring)));
|
||||
break;
|
||||
case this.Prefs.PREF_INT:
|
||||
return this.Prefs.getIntPref(aPrefstring);
|
||||
return aBranch.getIntPref(aPrefstring);
|
||||
break;
|
||||
default:
|
||||
return this.Prefs.getBoolPref(aPrefstring);
|
||||
return aBranch.getBoolPref(aPrefstring);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -70,9 +80,15 @@
|
||||
return null;
|
||||
},
|
||||
|
||||
setPref : function(aPrefstring, aNewValue)
|
||||
getDefaultPref : function(aPrefstring)
|
||||
{
|
||||
var pref = this.Prefs ;
|
||||
return this.getPref(aPrefstring, this.DefaultPrefs);
|
||||
},
|
||||
|
||||
setPref : function(aPrefstring, aNewValue, aBranch)
|
||||
{
|
||||
if (!aBranch) aBranch = this.Prefs;
|
||||
|
||||
var type;
|
||||
try {
|
||||
type = typeof aNewValue;
|
||||
@ -84,18 +100,23 @@
|
||||
switch (type)
|
||||
{
|
||||
case 'string':
|
||||
pref.setCharPref(aPrefstring, unescape(encodeURIComponent(aNewValue)));
|
||||
aBranch.setCharPref(aPrefstring, unescape(encodeURIComponent(aNewValue)));
|
||||
break;
|
||||
case 'number':
|
||||
pref.setIntPref(aPrefstring, parseInt(aNewValue));
|
||||
aBranch.setIntPref(aPrefstring, parseInt(aNewValue));
|
||||
break;
|
||||
default:
|
||||
pref.setBoolPref(aPrefstring, aNewValue);
|
||||
aBranch.setBoolPref(aPrefstring, aNewValue);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
setDefaultPref : function(aPrefstring)
|
||||
{
|
||||
return this.setPref(aPrefstring, aNewValue, this.DefaultPrefs);
|
||||
},
|
||||
|
||||
clearPref : function(aPrefstring)
|
||||
{
|
||||
try {
|
||||
|
@ -466,11 +466,6 @@ var TreeStyleTabService = {
|
||||
|
||||
var pref = isVertical ? 'tabbar.fixed.vertical' : 'tabbar.fixed.horizontal' ;
|
||||
this.setTreePref(pref, !this.getTreePref(pref));
|
||||
|
||||
if (!this.getTreePref('syncRelatedPrefs')) return;
|
||||
|
||||
if (!isVertical)
|
||||
this.setTreePref('enableSubtreeIndent', !this.getTreePref(pref));
|
||||
},
|
||||
|
||||
changeTabbarPosition : function(aNewPosition) /* PUBLIC API */
|
||||
@ -480,12 +475,6 @@ var TreeStyleTabService = {
|
||||
|
||||
aNewPosition = aNewPosition.toLowerCase();
|
||||
this.setTreePref('tabbar.position', aNewPosition);
|
||||
|
||||
if (!this.getTreePref('syncRelatedPrefs')) return;
|
||||
|
||||
var vertical = (aNewPosition == 'left' || aNewPosition == 'right');
|
||||
this.setTreePref('enableSubtreeIndent', vertical || !this.getTreePref('tabbar.fixed.horizontal'));
|
||||
this.setTreePref('allowSubtreeCollapseExpand', vertical);
|
||||
},
|
||||
|
||||
/* backward compatibility */
|
||||
@ -1170,6 +1159,25 @@ var TreeStyleTabService = {
|
||||
this.overrideExtensionsPreInit(); // hacks.js
|
||||
|
||||
this.registerTabFocusAllowance(this.defaultTabFocusAllowance);
|
||||
|
||||
// migrate old prefs
|
||||
switch (this.getTreePref('orientalPrefsMigrated'))
|
||||
{
|
||||
case 0:
|
||||
[
|
||||
'extensions.treestyletab.tabbar.fixed',
|
||||
'extensions.treestyletab.enableSubtreeIndent',
|
||||
'extensions.treestyletab.allowSubtreeCollapseExpand'
|
||||
].forEach(function(aPref) {
|
||||
let value = this.getPref(aPref);
|
||||
if (value === null) return;
|
||||
this.setPref(aPref+'.horizontal', value);
|
||||
this.setPref(aPref+'.vertical', value);
|
||||
}, this);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this.setTreePref('orientalPrefsMigrated', 1);
|
||||
},
|
||||
preInitialized : false,
|
||||
|
||||
|
@ -502,7 +502,6 @@ TreeStyleTabBrowser.prototype = {
|
||||
this.onPrefChange('extensions.treestyletab.tabbar.style');
|
||||
this.onPrefChange('extensions.treestyletab.twisty.style');
|
||||
this.onPrefChange('extensions.treestyletab.showBorderForFirstTab');
|
||||
this.onPrefChange('extensions.treestyletab.enableSubtreeIndent');
|
||||
this.onPrefChange('extensions.treestyletab.tabbar.invertTabContents');
|
||||
this.onPrefChange('extensions.treestyletab.tabbar.invertScrollbar');
|
||||
this.onPrefChange('extensions.treestyletab.tabbar.invertClosebox');
|
||||
@ -844,7 +843,7 @@ TreeStyleTabBrowser.prototype = {
|
||||
b.mStrip.removeAttribute('height');
|
||||
b.mPanelContainer.removeAttribute('height');
|
||||
|
||||
this.updateTabbarFixedState();
|
||||
this.updateTabbarState();
|
||||
|
||||
if (pos == this.kTABBAR_RIGHT) {
|
||||
b.setAttribute(this.kTABBAR_POSITION, 'right');
|
||||
@ -919,7 +918,7 @@ TreeStyleTabBrowser.prototype = {
|
||||
b.setAttribute(this.kMODE, this.getTreePref('tabbar.multirow') ? 'multirow' : 'horizontal' );
|
||||
b.removeAttribute(this.kTAB_INVERTED);
|
||||
|
||||
this.updateTabbarFixedState();
|
||||
this.updateTabbarState();
|
||||
|
||||
if (pos == this.kTABBAR_BOTTOM) {
|
||||
b.setAttribute(this.kTABBAR_POSITION, 'bottom');
|
||||
@ -961,16 +960,19 @@ TreeStyleTabBrowser.prototype = {
|
||||
scrollInnerBox = null;
|
||||
allTabsButton = null;
|
||||
},
|
||||
updateTabbarFixedState : function()
|
||||
updateTabbarState : function()
|
||||
{
|
||||
var b = this.mTabBrowser;
|
||||
var orient;
|
||||
if (this.isVertical) {
|
||||
orient = 'vertical';
|
||||
if (this.getTreePref('tabbar.fixed.vertical'))
|
||||
b.setAttribute(this.kFIXED, true);
|
||||
else
|
||||
b.removeAttribute(this.kFIXED);
|
||||
}
|
||||
else {
|
||||
orient = 'horizontal';
|
||||
if (this.getTreePref('tabbar.fixed.horizontal')) {
|
||||
b.setAttribute(this.kFIXED, true);
|
||||
if (!this.isMultiRow()) {
|
||||
@ -983,6 +985,18 @@ TreeStyleTabBrowser.prototype = {
|
||||
b.mStrip.setAttribute('height', this.getTreePref('tabbar.height'));
|
||||
}
|
||||
}
|
||||
|
||||
if (this.getTreePref('enableSubtreeIndent.'+orient))
|
||||
b.setAttribute(this.kINDENTED, 'true');
|
||||
else
|
||||
b.removeAttribute(this.kINDENTED);
|
||||
|
||||
if (this.getTreePref('allowSubtreeCollapseExpand.'+orient))
|
||||
b.setAttribute(this.kALLOW_COLLAPSE, 'true');
|
||||
else
|
||||
b.removeAttribute(this.kALLOW_COLLAPSE);
|
||||
|
||||
this.updateAllTabsIndent();
|
||||
},
|
||||
|
||||
destroy : function()
|
||||
@ -1127,14 +1141,6 @@ TreeStyleTabBrowser.prototype = {
|
||||
}, this);
|
||||
break;
|
||||
|
||||
case 'extensions.treestyletab.enableSubtreeIndent':
|
||||
if (value)
|
||||
b.setAttribute(this.kINDENTED, 'true');
|
||||
else
|
||||
b.removeAttribute(this.kINDENTED);
|
||||
this.updateAllTabsIndent();
|
||||
break;
|
||||
|
||||
case 'extensions.treestyletab.tabbar.style':
|
||||
if (value) {
|
||||
if (/^(default|vertigo|mixed)$/.test(value))
|
||||
@ -1189,13 +1195,6 @@ TreeStyleTabBrowser.prototype = {
|
||||
b.removeAttribute(this.kHIDE_ALLTABS);
|
||||
break;
|
||||
|
||||
case 'extensions.treestyletab.allowSubtreeCollapseExpand':
|
||||
if (value)
|
||||
b.setAttribute(this.kALLOW_COLLAPSE, true);
|
||||
else
|
||||
b.removeAttribute(this.kALLOW_COLLAPSE);
|
||||
break;
|
||||
|
||||
case 'extensions.treestyletab.tabbar.autoHide.mode':
|
||||
this.updateAutoHideMode();
|
||||
break;
|
||||
@ -1209,9 +1208,13 @@ TreeStyleTabBrowser.prototype = {
|
||||
this.endListenMouseMove();
|
||||
break;
|
||||
|
||||
case 'extensions.treestyletab.enableSubtreeIndent.horizontal':
|
||||
case 'extensions.treestyletab.enableSubtreeIndent.vertical':
|
||||
case 'extensions.treestyletab.allowSubtreeCollapseExpand.horizontal':
|
||||
case 'extensions.treestyletab.allowSubtreeCollapseExpand.vertical':
|
||||
case 'extensions.treestyletab.tabbar.fixed.vertical':
|
||||
case 'extensions.treestyletab.tabbar.fixed.horizontal':
|
||||
this.updateTabbarFixedState();
|
||||
this.updateTabbarState();
|
||||
break;
|
||||
|
||||
case 'extensions.treestyletab.tabbar.transparent.style':
|
||||
@ -2939,7 +2942,8 @@ TreeStyleTabBrowser.prototype = {
|
||||
|
||||
var b = this.mTabBrowser;
|
||||
if (!aProp) {
|
||||
aProp = this.getTreePref('enableSubtreeIndent') ? this.indentProp : null ;
|
||||
let orient = this.isVertical ? 'vertical' : 'horizontal' ;
|
||||
aProp = this.getTreePref('enableSubtreeIndent.'+orient) ? this.indentProp : null ;
|
||||
}
|
||||
var margin = this.indent < 0 ? this.baseIndent : this.indent ;
|
||||
var indent = margin * aLevel;
|
||||
|
@ -39,9 +39,11 @@ pref("extensions.treestyletab.tabbar.togglerSize", 5);
|
||||
pref("extensions.treestyletab.tabbar.fixed.horizontal", true);
|
||||
pref("extensions.treestyletab.tabbar.fixed.vertical", false);
|
||||
pref("extensions.treestyletab.syncRelatedPrefs", true);
|
||||
pref("extensions.treestyletab.enableSubtreeIndent", true);
|
||||
pref("extensions.treestyletab.enableSubtreeIndent.horizontal", false);
|
||||
pref("extensions.treestyletab.enableSubtreeIndent.vertical", true);
|
||||
pref("extensions.treestyletab.enableSubtreeIndent.allTabsPopup", true);
|
||||
pref("extensions.treestyletab.allowSubtreeCollapseExpand", true);
|
||||
pref("extensions.treestyletab.allowSubtreeCollapseExpand.horizontal", false);
|
||||
pref("extensions.treestyletab.allowSubtreeCollapseExpand.vertical", true);
|
||||
pref("extensions.treestyletab.showBorderForFirstTab", false);
|
||||
pref("extensions.treestyletab.autoExpand.enabled", true);
|
||||
pref("extensions.treestyletab.autoExpand.delay", 500);
|
||||
@ -114,5 +116,8 @@ pref("extensions.multipletab.show.multipletab-selection-item-removeTabSubTree",
|
||||
pref("extensions.treestyletab.TMP.doNotUpdate.isTabVisible", false);
|
||||
|
||||
|
||||
pref("extensions.treestyletab.orientalPrefsMigrated", 0);
|
||||
|
||||
|
||||
pref("extensions.treestyletab@piro.sakura.ne.jp.name", "chrome://treestyletab/locale/treestyletab.properties");
|
||||
pref("extensions.treestyletab@piro.sakura.ne.jp.description", "chrome://treestyletab/locale/treestyletab.properties");
|
||||
|
Loading…
Reference in New Issue
Block a user