diff --git a/app/electron/main.js b/app/electron/main.js index c147818da..6ec0670d5 100644 --- a/app/electron/main.js +++ b/app/electron/main.js @@ -723,6 +723,12 @@ app.whenReady().then(() => { win.webContents.userAgent = "SiYuan/" + appVer + " https://b3log.org/siyuan Electron " + win.webContents.userAgent; win.webContents.session.setSpellCheckerLanguages(["en-US"]); win.loadURL(data.url); + win.on("close", (event) => { + if (win && !win.isDestroyed()) { + win.webContents.send("siyuan-save-close"); + } + event.preventDefault(); + }); const targetScreen = screen.getDisplayNearestPoint(screen.getCursorScreenPoint()); if (mainScreen.id !== targetScreen.id) { win.setBounds(targetScreen.workArea); diff --git a/app/src/boot/onGetConfig.ts b/app/src/boot/onGetConfig.ts index dc48c43cc..5a8c358f2 100644 --- a/app/src/boot/onGetConfig.ts +++ b/app/src/boot/onGetConfig.ts @@ -28,6 +28,7 @@ import {getIdFromSYProtocol, isSYProtocol} from "../util/pathName"; import {App} from "../index"; import {initWindowEvent} from "./globalEvent/event"; import {sendGlobalShortcut} from "./globalEvent/keydown"; +import {closeWindow} from "../window/closeWin"; const matchKeymap = (keymap: Record, key1: "general" | "editor", key2?: "general" | "insert" | "heading" | "list" | "table") => { if (key1 === "general") { @@ -297,10 +298,14 @@ export const initWindow = (app: App) => { return; } }); - ipcRenderer.on(Constants.SIYUAN_SAVE_CLOSE, (event, close) => { - winOnClose(currentWindow, close); - }); } + ipcRenderer.on(Constants.SIYUAN_SAVE_CLOSE, (event, close) => { + if (isWindow()) { + closeWindow(app); + } else { + winOnClose(currentWindow, close); + } + }); ipcRenderer.on(Constants.SIYUAN_SEND_WINDOWS, (e, ipcData: IWebSocketData) => { onWindowsMsg(ipcData); }); diff --git a/app/src/layout/Wnd.ts b/app/src/layout/Wnd.ts index 97bc887e2..b00221d89 100644 --- a/app/src/layout/Wnd.ts +++ b/app/src/layout/Wnd.ts @@ -36,6 +36,7 @@ import {focusByOffset, getSelectionOffset} from "../protyle/util/selection"; import {Custom} from "./dock/Custom"; import {App} from "../index"; import {unicode2Emoji} from "../emoji"; +import {closeWindow} from "../window/closeWin"; export class Wnd { private app: App; @@ -775,7 +776,7 @@ export class Wnd { if (!wnd) { /// #if !BROWSER if (isWindow()) { - getCurrentWindow().destroy(); + closeWindow(this.app); return; } /// #endif