diff --git a/packages/core/src/config/index.js b/packages/core/src/config/index.js index add18b17..65bfb903 100644 --- a/packages/core/src/config/index.js +++ b/packages/core/src/config/index.js @@ -21,7 +21,8 @@ module.exports = { }, dock: { hideWhenWinClose: false - } + }, + closeStrategy: 0 }, server: { enabled: true, diff --git a/packages/gui/src/background.js b/packages/gui/src/background.js index 95b4f3b9..93481b77 100644 --- a/packages/gui/src/background.js +++ b/packages/gui/src/background.js @@ -173,9 +173,29 @@ function createWindow (startHideWindow) { tray = null }) + ipcMain.on('close', async (event, message) => { + if (message.value === 1) { + quit() + } else { + hideWin() + } + }) + win.on('close', (e) => { - if (!forceClose) { - e.preventDefault() + if (forceClose) { + return + } + e.preventDefault() + const config = DevSidecar.api.config.get() + const closeStrategy = config.app.closeStrategy + if (closeStrategy === 0) { + // 提醒 + win.webContents.send('close.showTip') + } else if (closeStrategy === 1) { + // 直接退出 + quit() + } else if (closeStrategy === 2) { + // 隐藏窗口 hideWin() } }) diff --git a/packages/gui/src/bridge/front.js b/packages/gui/src/bridge/front.js index 1df8e863..7224a306 100644 --- a/packages/gui/src/bridge/front.js +++ b/packages/gui/src/bridge/front.js @@ -4,14 +4,15 @@ import tongji from './tongji/front' import update from './update/front' import fileSelector from './file-selector/front' import autoStart from './auto-start/front' - +import onClose from './on-close/front' const modules = { // api, // 核心接口模块 error, fileSelector, // 文件选择模块 tongji, // 统计模块 update, // 自动更新 - autoStart + autoStart, + onClose } export default { install (app, api, router) { diff --git a/packages/gui/src/bridge/on-close/front.js b/packages/gui/src/bridge/on-close/front.js new file mode 100644 index 00000000..28bddfc0 --- /dev/null +++ b/packages/gui/src/bridge/on-close/front.js @@ -0,0 +1,49 @@ +function install (app, api) { + api.ipc.on('close.showTip', (event, message) => { + console.error('error', event, message) + const result = { + closeType: 1, + save: false + } + function onRadioChange (event) { + result.closeType = event.target.value + } + function onCheckChange (event) { + result.save = event.target.checked + } + app.$confirm({ + title: '关闭策略', + content: h =>