fix: migration des onglets singleton → PaneTabManager au split
CI / lint (push) Failing after 13s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 15s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
CI / lint (push) Failing after 13s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 15s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
_buildGrid: quand on passe de single-pane à multi-pane, migre les onglets du TabManager singleton vers le PaneTabManager du pane 0. Sans ça, transferTab() ne trouvait pas l'onglet (il était resté dans le singleton). _collapseToSingle: migration inverse (PaneTabManager → singleton) quand on ferme le dernier split.
This commit is contained in:
@@ -700,6 +700,30 @@ const PaneManager = {
|
|||||||
}
|
}
|
||||||
this.activePaneId = 0;
|
this.activePaneId = 0;
|
||||||
this._highlightActive();
|
this._highlightActive();
|
||||||
|
|
||||||
|
// Migrate tabs from singleton TabManager to pane-0 PaneTabManager
|
||||||
|
// (the singleton managed all tabs in single-pane mode)
|
||||||
|
if (!savedPanes && window._singletonTabManager && window._singletonTabManager._tabs.length > 0) {
|
||||||
|
const stm = window._singletonTabManager;
|
||||||
|
const ptm = this.tabManagers[0];
|
||||||
|
if (ptm && ptm._tabs.length === 0) {
|
||||||
|
console.log('[PaneManager] migrating', stm._tabs.length, 'tabs from singleton to pane-0');
|
||||||
|
ptm._tabs = stm._tabs.map(t => ({ ...t }));
|
||||||
|
ptm._tabCache = { ...stm._tabCache };
|
||||||
|
ptm._activeTabId = stm._activeTabId;
|
||||||
|
ptm._previewTabId = stm._previewTabId;
|
||||||
|
// Clear singleton — it now delegates to PaneManager
|
||||||
|
stm._tabs = [];
|
||||||
|
stm._tabCache = {};
|
||||||
|
stm._activeTabId = null;
|
||||||
|
stm._previewTabId = null;
|
||||||
|
// Render the migrated tabs
|
||||||
|
setTimeout(() => {
|
||||||
|
ptm._renderTabs();
|
||||||
|
if (ptm._activeTabId) ptm.activate(ptm._activeTabId);
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_createPane(idx, grid, reuseTabBar, reuseContent) {
|
_createPane(idx, grid, reuseTabBar, reuseContent) {
|
||||||
@@ -901,6 +925,20 @@ const PaneManager = {
|
|||||||
if (content) { content.id = 'content-area'; wrapper.appendChild(content); }
|
if (content) { content.id = 'content-area'; wrapper.appendChild(content); }
|
||||||
const tl = wrapper.querySelector('.tab-list');
|
const tl = wrapper.querySelector('.tab-list');
|
||||||
if (tl) tl.id = 'tab-list';
|
if (tl) tl.id = 'tab-list';
|
||||||
|
|
||||||
|
// Migrate tabs back to singleton TabManager
|
||||||
|
const ptm = this.tabManagers[0];
|
||||||
|
if (ptm && window._singletonTabManager) {
|
||||||
|
const stm = window._singletonTabManager;
|
||||||
|
stm._tabs = ptm._tabs.map(t => ({ ...t }));
|
||||||
|
stm._tabCache = { ...ptm._tabCache };
|
||||||
|
stm._activeTabId = ptm._activeTabId;
|
||||||
|
stm._previewTabId = ptm._previewTabId;
|
||||||
|
stm._tabBar = tabBar;
|
||||||
|
stm._tabList = tl;
|
||||||
|
stm._renderTabs();
|
||||||
|
}
|
||||||
|
|
||||||
// Re-init pane-0 TabManager to point to restored DOM
|
// Re-init pane-0 TabManager to point to restored DOM
|
||||||
if (this.tabManagers[0]) {
|
if (this.tabManagers[0]) {
|
||||||
this.tabManagers[0]._tabBar = tabBar;
|
this.tabManagers[0]._tabBar = tabBar;
|
||||||
|
|||||||
Reference in New Issue
Block a user