@@ -363,7 +363,6 @@ function restoreTabsFromCache(
363
363
) : Tab [ ] {
364
364
Logs . info ( 'Tabs.restoreTabsFromCache' )
365
365
366
- let logWrongPanels : Record < string , null > | undefined
367
366
const firstPanelId = lastPanel . id
368
367
const idsMap : Record < ID , ID > = { }
369
368
const tabs : Tab [ ] = [ ]
@@ -393,8 +392,6 @@ function restoreTabsFromCache(
393
392
// Normalize panelId
394
393
const panel = Sidebar . panelsById [ tab . panelId ]
395
394
if ( ! panel ) {
396
- if ( ! logWrongPanels ) logWrongPanels = { }
397
- logWrongPanels [ tab . panelId ] = null
398
395
tab . panelId = lastPanel . id
399
396
} else {
400
397
if ( ! tab . pinned ) {
@@ -414,10 +411,6 @@ function restoreTabsFromCache(
414
411
tabs . push ( tab )
415
412
}
416
413
417
- if ( logWrongPanels ) {
418
- Logs . warn ( 'Tabs loading: Cannot find panels: ' + Object . keys ( logWrongPanels ) . join ( ' ' ) )
419
- }
420
-
421
414
return tabs
422
415
}
423
416
@@ -428,7 +421,6 @@ function restoreTabsFromSessionData(
428
421
) : Tab [ ] {
429
422
Logs . info ( 'Tabs.restoreTabsFromSessionData' )
430
423
431
- let logWrongPanels : Record < string , null > | undefined
432
424
const firstPanelId = lastPanel . id
433
425
const idsMap : Record < ID , ID > = { }
434
426
const tabs : Tab [ ] = [ ]
@@ -462,17 +454,7 @@ function restoreTabsFromSessionData(
462
454
463
455
// Normalize panelId
464
456
const panel = Sidebar . panelsById [ tab . panelId ]
465
- if ( ! panel ) {
466
- if ( ! logWrongPanels ) logWrongPanels = { }
467
- logWrongPanels [ tab . panelId ] = null
468
- tab . panelId = lastPanel . id
469
- } else {
470
- if ( ! tab . pinned ) {
471
- // Check order of panels
472
- if ( panel . index < lastPanel . index ) tab . panelId = lastPanel . id
473
- else lastPanel = panel
474
- }
475
- }
457
+ if ( ! panel ) tab . panelId = lastPanel . id
476
458
477
459
// Use openerTabId as fallback for parentId
478
460
if ( tab . parentId === - 1 && tab . openerTabId !== undefined && Tabs . byId [ tab . openerTabId ] ) {
@@ -484,8 +466,28 @@ function restoreTabsFromSessionData(
484
466
tabs . push ( tab )
485
467
}
486
468
487
- if ( logWrongPanels ) {
488
- Logs . warn ( 'Tabs loading: Cannot find panels: ' + Object . keys ( logWrongPanels ) . join ( ' ' ) )
469
+ let lastPanelIndex = - 1
470
+ for ( const panel of Sidebar . panels ) {
471
+ if ( ! Utils . isTabsPanel ( panel ) ) continue
472
+
473
+ let prevTabIndex = - 1
474
+ for ( let ti = 0 ; ti < tabs . length ; ti ++ ) {
475
+ const tab = tabs [ ti ]
476
+ if ( tab . pinned ) continue
477
+
478
+ if ( tab . panelId !== panel . id ) continue
479
+
480
+ if ( tab . index <= lastPanelIndex || ( prevTabIndex !== - 1 && tab . index - 1 !== prevTabIndex ) ) {
481
+ let prevTab = tabs [ ti - 1 ] as Tab | undefined
482
+ if ( prevTab ?. pinned ) prevTab = undefined
483
+ tab . panelId = prevTab ?. panelId ?? firstPanelId
484
+ continue
485
+ }
486
+
487
+ prevTabIndex = tab . index
488
+ }
489
+
490
+ lastPanelIndex = prevTabIndex
489
491
}
490
492
491
493
return tabs
0 commit comments