diff --git a/app/src/layout/Wnd.ts b/app/src/layout/Wnd.ts index 1d3e9cf48..bcd74ad31 100644 --- a/app/src/layout/Wnd.ts +++ b/app/src/layout/Wnd.ts @@ -571,7 +571,7 @@ export class Wnd { if (this.parent.type === "center" && this.children.length === 2 && !this.children[0].headElement) { this.removeTab(this.children[0].id); } else if (this.children.length > window.siyuan.config.fileTree.maxOpenTabCount) { - this.removeOverCounter(oldFocusIndex); + this.removeOverCounter(isSaveLayout); } /// #if !BROWSER setTabPosition(); @@ -641,22 +641,15 @@ export class Wnd { }); } - private removeOverCounter(oldFocusIndex?: number) { - if (typeof oldFocusIndex === "undefined") { - this.children.forEach((item, index) => { - if (item.headElement && item.headElement.classList.contains("item--focus")) { - oldFocusIndex = index; - } - }); - } + private removeOverCounter(isSaveLayout = false) { let removeId: string; let openTime: string; + let removeCount = 0 this.children.forEach((item, index) => { - if (item.headElement.classList.contains("item--pin") || - item.headElement.classList.contains("item--focus") || - index === oldFocusIndex) { + if (item.headElement.classList.contains("item--pin") || item.headElement.classList.contains("item--focus")) { return; } + removeCount++; if (!openTime) { openTime = item.headElement.getAttribute("data-activetime"); removeId = this.children[index].id; @@ -666,7 +659,11 @@ export class Wnd { } }); if (removeId) { - this.removeTab(removeId); + this.removeTab(removeId, false, false, isSaveLayout); + removeCount--; + } + if (removeCount > 0 && this.children.length > window.siyuan.config.fileTree.maxOpenTabCount) { + this.removeOverCounter(isSaveLayout); } }