Persist width and vertical split for sidebars

pull/5605/head
Noley Holland 2026-04-01 10:32:17 -07:00
parent 615b7992b2
commit 2dddc599e3
1 changed files with 35 additions and 1 deletions

View File

@ -57,8 +57,21 @@ RED.sidebar = (function() {
const state = {
primary: { top: { tabs: [] }, bottom: { tabs: [] } },
secondary: { top: { tabs: [] }, bottom: { tabs: [] } },
v: sidebarLayoutVersion
v: sidebarLayoutVersion,
dimensions: {
// Store split as px for reliable restore before render in init()
// since container height may not be available until after render
primary: {
width: sidebars.primary.container ? sidebars.primary.container.width() : sidebars.primary.defaultWidth,
splitPx: sidebars.primary.sections.top.container.outerHeight() || (sidebars.primary.container ? sidebars.primary.container.height() * sidebars.primary.defaultTopHeight : 300)
},
secondary: {
width: sidebars.secondary.container ? sidebars.secondary.container.width() : sidebars.secondary.defaultWidth,
splitPx: sidebars.secondary.sections.top.container.outerHeight() || (sidebars.secondary.container ? sidebars.secondary.container.height() * sidebars.secondary.defaultTopHeight : 300)
}
}
}
function getTabButtons(tabBar) {
const result = []
tabBar.children('button').each(function() {
@ -585,6 +598,7 @@ RED.sidebar = (function() {
sidebar.tabBar.css('min-width', sidebar.container.width() - 5)
}
RED.events.emit("sidebar:resize");
exportSidebarState();
}
});
return separator
@ -748,6 +762,7 @@ RED.sidebar = (function() {
sidebar.resizeSidebar()
},
stop:function(event,ui) {
exportSidebarState();
}
});
@ -841,6 +856,25 @@ RED.sidebar = (function() {
sidebars.primary.tabBars.bottom.active = lastSessionSelectedTabs?.primary?.bottom?.active
sidebars.secondary.tabBars.top.active = lastSessionSelectedTabs?.secondary?.top?.active
sidebars.secondary.tabBars.bottom.active = lastSessionSelectedTabs?.secondary?.bottom?.active
// Restore sidebar widths and splitPx if present
if (lastSessionSelectedTabs?.dimensions) {
if (lastSessionSelectedTabs.dimensions.primary?.width) {
sidebars.primary.container.width(lastSessionSelectedTabs.dimensions.primary.width)
}
if (lastSessionSelectedTabs.dimensions.secondary?.width) {
sidebars.secondary.container.width(lastSessionSelectedTabs.dimensions.secondary.width)
}
if (lastSessionSelectedTabs.dimensions.primary?.splitPx) {
sidebars.primary.sections.top.container.outerHeight(lastSessionSelectedTabs.dimensions.primary.splitPx);
sidebars.primary.sections.top.height = lastSessionSelectedTabs.dimensions.primary.splitPx;
}
if (lastSessionSelectedTabs.dimensions.secondary?.splitPx) {
sidebars.secondary.sections.top.container.outerHeight(lastSessionSelectedTabs.dimensions.secondary.splitPx);
sidebars.secondary.sections.top.height = lastSessionSelectedTabs.dimensions.secondary.splitPx;
}
}
}
return {