File tree Expand file tree Collapse file tree 2 files changed +37
-3
lines changed
webextensions/resources/module Expand file tree Collapse file tree 2 files changed +37
-3
lines changed Original file line number Diff line number Diff line change @@ -268,13 +268,13 @@ export default class InContentPanel {
268268 if ( message . targetId ) {
269269 this . lastTimestampFor . set ( message . targetId , message . timestamp ) ;
270270 }
271- this . panel . classList . remove ( 'open' ) ;
271+ this . hide ( ) ;
272272 return true ;
273273 } ) ( ) ;
274274
275275 case 'treestyletab:notify-sidebar-closed' :
276276 if ( this . panel ) {
277- this . panel . classList . remove ( 'open' ) ;
277+ this . hide ( ) ;
278278 }
279279 break ;
280280 }
@@ -289,7 +289,7 @@ export default class InContentPanel {
289289 return ;
290290
291291 if ( this . panel ) {
292- this . panel . parentNode . removeChild ( this . panel ) ;
292+ this . panel . remove ( ) ;
293293 this . panel = null ;
294294 }
295295
@@ -301,6 +301,23 @@ export default class InContentPanel {
301301 this . root = this . onMessageSelf = this . destroySelf = null ;
302302 }
303303
304+ async hide ( ) {
305+ if ( ! this . panel )
306+ return ;
307+
308+ this . panel . classList . remove ( 'open' ) ;
309+
310+ if ( this . panel . classList . contains ( 'animation' ) ) {
311+ await new Promise ( ( resolve , _reject ) => {
312+ this . panel . addEventListener ( 'transitionend' , resolve , { once : true } ) ;
313+ } ) ;
314+ }
315+
316+ browser . runtime . sendMessage ( {
317+ type : `treestyletab:${ this . type } :notify-panel-hidden` ,
318+ } ) ;
319+ }
320+
304321 get UISource ( ) { // this can be overridden by subclasses
305322 return '' ;
306323 }
Original file line number Diff line number Diff line change @@ -102,6 +102,22 @@ export default class InContentPanelController {
102102 this . hideIn ( activeInfo . tabId , { timestamp } ) ;
103103 this . hideIn ( activeInfo . previousTabId , { timestamp } ) ;
104104 } ) ;
105+
106+ browser . runtime . onMessage . addListener ( ( message , sender ) => {
107+ switch ( message ?. type ) {
108+ case `treestyletab:${ this . type } :notify-panel-hidden` :
109+ if ( sender . tab ) {
110+ browser . sessions . removeTabValue ( sender . tab . id , KEY_CLOSED_CONTAINER_TYPE ) . catch ( _error => null ) ;
111+ browser . tabs . sendMessage ( sender . tab . id , {
112+ type : `treestyletab:${ this . type } :destroy` ,
113+ } ) ;
114+ }
115+ break ;
116+
117+ default :
118+ break ;
119+ }
120+ } ) ;
105121 }
106122
107123 value ( property ) {
@@ -215,6 +231,7 @@ export default class InContentPanelController {
215231 if (message.stillVisibleInSplitView)
216232 return;
217233 case '${ Constants . kCOMMAND_NOTIFY_TAB_DETACHED_FROM_WINDOW } ':
234+ case 'treestyletab:' + instance.type + ':destroy':
218235 window.destroyClosedContents(destructor);
219236 break;
220237 }
You can’t perform that action at this time.
0 commit comments