fix: 侧边栏高亮逻辑清理与边界情况修复

- 移除 loadTabState 中冗余的 updateSidebarHighlight 调用(switchToTab/closeTab 已覆盖)
- 无文件夹+无标签时自动隐藏侧边栏(之前会空显示)
- handleSave/handleSaveAs 后刷新侧边栏(文件路径变化时同步更新)
This commit is contained in:
thzxx
2026-05-21 12:59:02 +08:00
parent eff04606bd
commit 2d899cca7e
+11 -11
View File
@@ -545,15 +545,22 @@
const tab = getActiveTab();
const activePath = tab ? tab.filePath : null;
// If no folder is open, just re-render independent files
// No folder open: manage independent files section
if (!currentRootPath) {
if (tabs.length === 0) {
// No tabs and no folder — hide sidebar
sidebar.classList.add('collapsed');
sidebarTree.innerHTML = '';
return;
}
sidebar.classList.remove('collapsed');
sidebarTree.innerHTML = '';
const indepSection = renderIndependentFiles();
if (indepSection) sidebarTree.appendChild(indepSection);
return;
}
// Re-render independent files section (files may have been added/removed)
// Folder is open: re-render independent files section (files may have been added/removed)
const oldSection = sidebarTree.querySelector('.independent-files-section');
const newSection = renderIndependentFiles();
if (oldSection) oldSection.remove();
@@ -619,15 +626,6 @@
// Update modified state
setModified(tab.isModified);
// Update sidebar highlight and independent files
updateSidebarHighlight();
// If no folder is open but we have open files, ensure sidebar is visible
if (!currentRootPath && tabs.length > 0) {
sidebar.classList.remove('collapsed');
} else if (!currentRootPath && tabs.length === 0) {
sidebar.classList.add('collapsed');
}
// Notify main process about active file
if (typeof window.electronAPI !== 'undefined') {
window.electronAPI.tabSwitched(tab.filePath);
@@ -782,6 +780,7 @@
tab.isModified = false;
renderTabBar();
updateTitle();
updateSidebarHighlight();
statusText.textContent = '已保存';
setTimeout(() => updateTitle(), 2000);
}
@@ -810,6 +809,7 @@
tab.isModified = false;
renderTabBar();
updateTitle();
updateSidebarHighlight();
statusText.textContent = '已保存';
setTimeout(() => updateTitle(), 2000);
}