@@ -173,50 +173,43 @@ tabutils._stackTabs = function() {
173
173
aTab . dispatchEvent ( new CustomEvent ( "TabUnstacked" , { bubbles : true } ) ) ;
174
174
} ;
175
175
176
- gBrowser . collapseStack = function collapseStack ( aTab ) {
176
+ gBrowser . collapseStack = function collapseStack ( aTab , aForce ) {
177
177
if ( ! aTab . hasAttribute ( "group" ) )
178
178
return ;
179
179
180
- if ( aTab . hasAttribute ( "group-collapsed" ) )
180
+ if ( aForce == aTab . hasAttribute ( "group-collapsed" ) )
181
181
return ;
182
182
183
+ if ( aForce == null )
184
+ aForce = ! aTab . hasAttribute ( "group-collapsed" ) ;
185
+
183
186
let tabs = this . siblingTabsOf ( aTab ) ;
184
187
for ( let tab of tabs ) {
185
- tab . collapsed = true ;
186
- tabutils . setAttribute ( tab , "group-collapsed" , true ) ;
188
+ tab . collapsed = aForce ;
189
+ tabutils . setAttribute ( tab , "group-collapsed" , aForce ) ;
187
190
if ( tab . hasAttribute ( "group-selected" ) )
188
191
aTab = tab ;
189
192
}
190
193
aTab . collapsed = false ;
191
194
192
- let tabcontent = document . getAnonymousElementByAttribute ( aTab , "class" , "tab-content" ) ;
193
- if ( tabcontent )
194
- tabcontent . setAttribute ( "group-counter" , "(" + tabs . length + ")" ) ;
195
+ if ( aForce ) {
196
+ let tabcontent = document . getAnonymousElementByAttribute ( aTab , "class" , "tab-content" ) ;
197
+ if ( tabcontent )
198
+ tabcontent . setAttribute ( "group-counter" , "(" + tabs . length + ")" ) ;
199
+ }
195
200
196
- aTab . dispatchEvent ( new CustomEvent ( "StackCollapsed" , { bubbles : true } ) ) ;
201
+ aTab . dispatchEvent ( new CustomEvent ( aForce ? "StackCollapsed" : "StackExpanded ", { bubbles : true } ) ) ;
197
202
this . mTabContainer . adjustTabstrip ( ) ;
198
- } ;
199
-
200
- gBrowser . expandStack = function expandStack ( aTab ) {
201
- if ( ! aTab . hasAttribute ( "group" ) )
202
- return ;
203
203
204
- if ( ! aTab . hasAttribute ( "group-collapsed" ) )
205
- return ;
206
-
207
- let tabs = this . siblingTabsOf ( aTab ) ;
208
- for ( let tab of tabs ) {
209
- tab . collapsed = false ;
210
- tabutils . removeAttribute ( tab , "group-collapsed" ) ;
211
- if ( tab . hasAttribute ( "group-selected" ) )
212
- aTab = tab ;
204
+ if ( ! aForce ) {
205
+ this . mTabContainer . mTabstrip . ensureElementIsVisible ( tabs [ tabs . length - 1 ] , false ) ;
206
+ this . mTabContainer . mTabstrip . ensureElementIsVisible ( tabs [ 0 ] , false ) ;
213
207
}
214
- aTab . dispatchEvent ( new CustomEvent ( "StackExpanded" , { bubbles : true } ) ) ;
215
- this . mTabContainer . adjustTabstrip ( ) ;
216
- this . mTabContainer . mTabstrip . ensureElementIsVisible ( tabs [ tabs . length - 1 ] , false ) ;
217
- this . mTabContainer . mTabstrip . ensureElementIsVisible ( tabs [ 0 ] , false ) ;
208
+ this . mTabContainer . mTabstrip . ensureElementIsVisible ( aTab , false ) ;
218
209
} ;
219
210
211
+ gBrowser . expandStack = function expandStack ( aTab ) this . collapseStack ( aTab , false ) ;
212
+
220
213
gBrowser . updateStack = function updateStack ( aTab , options = { } ) {
221
214
let tabs = this . siblingTabsOf ( aTab ) ;
222
215
if ( tabs . length == 0 )
@@ -468,7 +461,7 @@ tabutils._stackTabs = function() {
468
461
TU_getPref ( "extensions.tabutils.autoExpandStackAndCollapseOthersOnSelect" , true ) ) {
469
462
Array . forEach ( this . visibleTabs , function ( aTab ) {
470
463
if ( aTab . hasAttribute ( "group-selected" ) && ! aTab . selected )
471
- this . collapseStack ( aTab ) ;
464
+ this . collapseStack ( aTab , true ) ;
472
465
} , this ) ;
473
466
this . expandStack ( aTab ) ;
474
467
this . mTabContainer . mTabstrip . ensureElementIsVisible ( this . mCurrentTab , false ) ;
@@ -479,7 +472,7 @@ tabutils._stackTabs = function() {
479
472
if ( lastTab && lastTab . hasAttribute ( "group" ) &&
480
473
lastTab . getAttribute ( "group" ) != aTab . getAttribute ( "group" ) &&
481
474
TU_getPref ( "extensions.tabutils.autoCollapseStackOnBlur" , false ) )
482
- this . collapseStack ( lastTab ) ;
475
+ this . collapseStack ( lastTab , true ) ;
483
476
} ) ;
484
477
485
478
TU_hookCode ( "gBrowser.onTabPinning" , "}" , function ( ) {
@@ -524,8 +517,8 @@ tabutils._stackTabs = function() {
524
517
525
518
TU_hookCode ( "gBrowser.createTooltip" , / ( t a b | t n ) .g e t A t t r i b u t e \( " l a b e l " \) / , function ( s , s1 ) ( function ( ) {
526
519
$1 . mOverTwisty ? $1 . hasAttribute ( "group-collapsed" ) ?
527
- document . getElementById ( "context_expandStack " ) . getAttribute ( "label " ) :
528
- document . getElementById ( "context_collapseStack" ) . getAttribute ( "label " )
520
+ document . getElementById ( "context_collapseStack " ) . getAttribute ( "label_expand " ) :
521
+ document . getElementById ( "context_collapseStack" ) . getAttribute ( "label_collapse " )
529
522
: this . isCollapsedStack ( $1 ) ?
530
523
TU_getPref ( "extensions.tabutils.mouseHoverPopup" , true ) ?
531
524
event . preventDefault ( ) :
0 commit comments