@@ -22,7 +22,7 @@ function insertAfter(toInsertAfter, toInsert) {
22
22
23
23
if ( ! parent ) {
24
24
throw new Error (
25
- 'The element you want me to base insertions on has no parent'
25
+ 'The element you want me to base insertions on has no parent' ,
26
26
)
27
27
}
28
28
@@ -111,6 +111,9 @@ var VerticalTabs = {
111
111
/** @type {MutationObserver? } */
112
112
_widthObserver : null ,
113
113
114
+ /** @type {boolean } */
115
+ isFullScreen : false ,
116
+
114
117
init ( ) {
115
118
if ( this . _initialized ) {
116
119
return
@@ -125,11 +128,11 @@ var VerticalTabs = {
125
128
126
129
document . documentElement . setAttribute (
127
130
'show-tab-close' ,
128
- this . showCloseButton ? 'true' : 'false'
131
+ this . showCloseButton ? 'true' : 'false' ,
129
132
)
130
133
document . documentElement . setAttribute (
131
134
'show-tab-new' ,
132
- this . showNewTab ? 'true' : 'false'
135
+ this . showNewTab ? 'true' : 'false' ,
133
136
)
134
137
135
138
if ( this . verticalTabsEnabled ) {
@@ -142,6 +145,19 @@ var VerticalTabs = {
142
145
gBrowser . handleNewTabMiddleClick ( this . arrowScrollbox , event )
143
146
} )
144
147
148
+ addEventListener ( 'fullscreen' , this , true )
149
+ window . addEventListener ( 'mousemove' , ( e ) => {
150
+ if ( ! window . fullScreen || ! this . verticalTabsEnabled ) return
151
+ const tabsToolbar = this . tabsToolbar
152
+ if ( ! tabsToolbar ) return
153
+
154
+ const tabsWidth = tabsToolbar . clientWidth
155
+ // If not hovering over the expanded tabs, we should collpase them
156
+ if ( e . clientX > tabsWidth ) return this . fsMethods . collapse ( )
157
+ // If towards the edge of the screen, the tabs should be reexpanded
158
+ if ( e . clientX == 0 ) return this . fsMethods . expand ( )
159
+ } )
160
+
145
161
this . _initialized = true
146
162
} ,
147
163
@@ -160,7 +176,7 @@ var VerticalTabs = {
160
176
161
177
this . tabsToolbar ?. setAttribute (
162
178
'collapse' ,
163
- this . browserCollapseTabs ? 'true' : 'false'
179
+ this . browserCollapseTabs ? 'true' : 'false' ,
164
180
)
165
181
this . tabsToolbar ?. removeAttribute ( 'flex' )
166
182
changeXULTagName ( 'vbox' , this . tabsToolbar )
@@ -171,20 +187,20 @@ var VerticalTabs = {
171
187
172
188
this . tabsToolbar ?. setAttribute (
173
189
'width' ,
174
- Services . prefs . getIntPref ( VERTICAL_TABS_WIDTH , 200 )
190
+ Services . prefs . getIntPref ( VERTICAL_TABS_WIDTH , 200 ) ,
175
191
)
176
192
if ( this . tabsToolbar )
177
193
this . tabsToolbar . style . width = `${ Services . prefs . getIntPref (
178
194
VERTICAL_TABS_WIDTH ,
179
- 200
195
+ 200 ,
180
196
) } px`
181
197
182
198
if ( ! this . splitter ) {
183
199
const separator = document . createXULElement ( 'splitter' )
184
200
separator . setAttribute ( 'id' , 'verticaltabs-splitter' )
185
201
separator . setAttribute (
186
202
'class' ,
187
- 'chromeclass-extrachrome verticaltabs-splitter'
203
+ 'chromeclass-extrachrome verticaltabs-splitter' ,
188
204
)
189
205
separator . setAttribute ( 'resizebefore' , 'sibling' )
190
206
separator . setAttribute ( 'resizeafter' , 'none' )
@@ -224,6 +240,43 @@ var VerticalTabs = {
224
240
}
225
241
} ,
226
242
243
+ handleEvent ( event ) {
244
+ switch ( event . type ) {
245
+ case 'fullscreen' :
246
+ if ( ! window . fullScreen ) this . fsMethods . collapse ( )
247
+ else this . fsMethods . expand ( )
248
+ break
249
+ }
250
+ } ,
251
+
252
+ fsMethods : {
253
+ isCollapsed : false ,
254
+ get parent ( ) {
255
+ return VerticalTabs
256
+ } ,
257
+
258
+ collapse ( ) {
259
+ if ( this . isCollapsed ) return
260
+ this . isCollapsed = true
261
+
262
+ // Set the margin to hide the tabs of the side of the screen
263
+ if ( ! this . parent . tabsToolbar || ! this . parent . splitter ) return
264
+ this . parent . tabsToolbar . style . marginLeft =
265
+ - (
266
+ this . parent . tabsToolbar . clientWidth + this . parent . splitter . clientWidth
267
+ ) + 'px'
268
+ } ,
269
+
270
+ expand ( ) {
271
+ if ( ! this . isCollapsed ) return
272
+ this . isCollapsed = false
273
+
274
+ // Reset left margin
275
+ if ( ! this . parent . tabsToolbar ) return
276
+ this . parent . tabsToolbar . style . marginLeft = ''
277
+ } ,
278
+ } ,
279
+
227
280
/**
228
281
* @param {MutationRecord[] } mutationsList
229
282
* @param {MutationObserver } _observer
@@ -235,7 +288,7 @@ var VerticalTabs = {
235
288
236
289
Services . prefs . setIntPref (
237
290
VERTICAL_TABS_WIDTH ,
238
- parseInt ( tabsToolbar ?. getAttribute ( 'width' ) || '100' )
291
+ parseInt ( tabsToolbar ?. getAttribute ( 'width' ) || '100' ) ,
239
292
)
240
293
}
241
294
}
@@ -259,18 +312,18 @@ var VerticalTabs = {
259
312
. getElementById ( 'TabsToolbar' )
260
313
?. setAttribute (
261
314
'collapse' ,
262
- this . browserCollapseTabs ? 'true' : 'false'
315
+ this . browserCollapseTabs ? 'true' : 'false' ,
263
316
)
264
317
}
265
318
266
319
if ( data === SHOW_CLOSE_BUTTON || data === SHOW_NEW_TAB ) {
267
320
document . documentElement . setAttribute (
268
321
'show-tab-close' ,
269
- this . showCloseButton ? 'true' : 'false'
322
+ this . showCloseButton ? 'true' : 'false' ,
270
323
)
271
324
document . documentElement . setAttribute (
272
325
'show-tab-new' ,
273
- this . showNewTab ? 'true' : 'false'
326
+ this . showNewTab ? 'true' : 'false' ,
274
327
)
275
328
}
276
329
0 commit comments