Tree Style Tab 2

さらに修正

  • 0.7.2009043002 で動作確認
  • zk 末尾のタブが子を持っていると正常動作しない点を修正
  • d で削除後アクティブになるタブ 優先順位
    1. 対象の子
    2. 同一階層の次
    3. 同一階層の前
  • zH を 変更
  • z@
    • 次に開くタブを現アクティブタブの子にする
  • z[
    • 以後 開くタブを現アクティブタブの子にする
  • z]
    • 親 解除

あと、zxとzv あたりで、タブを切り貼りしたいんだけど、
上手くいかず…

全コード

以下差分

diff -r 68347887b547 treeTabStyle.js
--- a/treeTabStyle.js	Thu Apr 30 23:03:35 2009 +0900
+++ b/treeTabStyle.js	Thu Apr 30 23:15:13 2009 +0900
@@ -26,6 +26,9 @@
   setup("zC" , "collapse all subtree"           , "collapseAllSubtree");
   setup("zo" , "expand subtree"                 , "expandSubtree");
   setup("z^" , "goto first tab"                 , "firstTab");
+	setup("z@" , "ready to open child tab once"   , "readyToOpenChildTabOnce");
+	setup("z[" , "ready to open child tab"        , "readyToOpenChildTab");
+	setup("z]" , "stop to open child tab"         , "stopToOpenChildTab");
 
   plg.userTreeStyleTab={
     nextTab:function(aCount){
@@ -52,33 +55,30 @@
         else{
         t1 = (t2=TreeStyleTabService.getParentTab(t1))
           ? TreeStyleTabService.getLastChildTab(t2)
-          : TreeStyleTabService.getLastTab(gBrowser);
+          : TreeStyleTabService.getRootTab(TreeStyleTabService.getLastTab(gBrowser));
         }
       }
       gBrowser.selectedTab = t1;
     },removeTab:function(){
-      var t=gBrowser.selectedTab,p,q;
-      if(!TreeStyleTabService.getNextSiblingTab(t)){
-        plg.userTreeStyleTab.prevTab();
+      var t=gBrowser.selectedTab;
+      if(!TreeStyleTabService.getNextSiblingTab(t) && !TreeStyleTabService.hasChildTabs(t)){
+				p = TreeStyleTabService.getPreviousSiblingTab(t)||TreeStyleTabService.getParentTab(t);
+				if(p) gBrowser.selectedTab = p;
       }
       gBrowser.removeTab(t);
     },parentTab:function(){
       var t = TreeStyleTabService.getParentTab(gBrowser.selectedTab);
       if(t) gBrowser.selectedTab=t;
     },rootTab:function(){
-      var t1,t2;
-      for(t1=gBrowser.selectedTab;t1;t1=TreeStyleTabService.getParentTab(t1)) t2=t1;
-      if(t2) gBrowser.selectedTab=t2;
+			gBrowser.selectedTab = TreeStyleTabService.getRootTab(gBrowser.selectedTab);
     },firstChildTab:function(){
       var t = TreeStyleTabService.getFirstChildTab(gBrowser.selectedTab);
       if(t) gBrowser.selectedTab=t;
     },removeTabSubTree:function(){
       plg.userTreeStyleTab.collapseSubtree.apply(this,arguments);
-      plg.userTreeStyleTab.removeTab.apply(this,arguments);
+			gBrowser.removeTab(gBrowser.selectedTab);
     },removeTabTreeAll:function(){
-      var t1,t2;
-      for(t1=gBrowser.selectedTab;t1;t1=TreeStyleTabService.getParentTab(t1)) t2=t1;
-      gBrowser.selectedTab = t2;
+			gBrowser.selectedTab = TreeStyleTabService.getRootTab(gBrowser.selectedTab);
       plg.userTreeStyleTab.removeTabSubTree.apply(this,arguments);
     },collapseSubtree:function(){
       gBrowser.treeStyleTab.collapseExpandSubtree(gBrowser.selectedTab,true);
@@ -92,6 +92,14 @@
       gBrowser.selectedTab = (t2=TreeStyleTabService.getParentTab(t1))
         ? TreeStyleTabService.getFirstChildTab(t2)
         : TreeStyleTabService.getFirstTab(gBrowser);
-    }
+    },readyToOpenChildTabCore:function(aTab,aFlag){
+			TreeStyleTabService.readyToOpenChildTab(aTab,aFlag);
+    },readyToOpenChildTabOnce:function(){
+			plg.userTreeStyleTab.readyToOpenChildTabCore(gBrowser.selectedTab);
+    },readyToOpenChildTab:function(){
+			plg.userTreeStyleTab.readyToOpenChildTabCore(gBrowser.selectedTab,true);
+		},stopToOpenChildTab:function(){
+			TreeStyleTabService.stopToOpenChildTab(gBrowser.selectedTab);
+		}	
   };
 })();