diff --git a/src/main/presenter/tabPresenter.ts b/src/main/presenter/tabPresenter.ts index 4ab291bcd..cc35a0956 100644 --- a/src/main/presenter/tabPresenter.ts +++ b/src/main/presenter/tabPresenter.ts @@ -196,6 +196,14 @@ export class TabPresenter implements ITabPresenter { return await this.destroyTab(tabId) } + /** + * 销毁标签页 + */ + async closeTabs(windowId: number): Promise { + const tabs = [...(this.windowTabs.get(windowId) ?? [])] + tabs.forEach((t) => this.closeTab(t)) + } + /** * 激活标签页 */ diff --git a/src/main/presenter/windowPresenter/index.ts b/src/main/presenter/windowPresenter/index.ts index 89c3c8812..c5f937c4b 100644 --- a/src/main/presenter/windowPresenter/index.ts +++ b/src/main/presenter/windowPresenter/index.ts @@ -794,6 +794,7 @@ export class WindowPresenter implements IWindowPresenter { console.log( `Window ${windowId}: Allowing default close behavior (app is quitting or macOS last window configured to quit).` ) + presenter.tabPresenter.closeTabs(windowId) } } else { // 如果 isQuitting 为 true,表示应用正在主动退出,允许窗口正常关闭 diff --git a/src/shared/presenter.d.ts b/src/shared/presenter.d.ts index ae8b2cfb5..0feff5214 100644 --- a/src/shared/presenter.d.ts +++ b/src/shared/presenter.d.ts @@ -184,6 +184,7 @@ export interface IWindowPresenter { export interface ITabPresenter { createTab(windowId: number, url: string, options?: TabCreateOptions): Promise closeTab(tabId: number): Promise + closeTabs(windowId: number): Promise switchTab(tabId: number): Promise getTab(tabId: number): Promise detachTab(tabId: number): Promise