diff --git a/src/electron.ts b/src/electron.ts index ca430b5..a000622 100644 --- a/src/electron.ts +++ b/src/electron.ts @@ -27,7 +27,7 @@ if (process.platform === "darwin") { { label: "Application", submenu: [ - { label: "Quit", accelerator: "Command+Q", click: () => { app.quit() } } + { label: "Quit", accelerator: "Command+Q", click: () => { if (winManager.hasWindow) winManager.mainWindow.close() } } ] }, { @@ -40,6 +40,14 @@ if (process.platform === "darwin") { { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" }, { label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" } ] + }, + { + label: "Window", + submenu: [ + { label: "Close", accelerator: "Command+W", click: () => { if (winManager.hasWindow) winManager.mainWindow.close() } }, + { label: "Minimize", accelerator: "Command+M", click: () => { if (winManager.hasWindow()) winManager.mainWindow.minimize() } }, + { label: "Zoom", click: () => winManager.zoom() } + ] } ] Menu.setApplicationMenu(Menu.buildFromTemplate(template)) @@ -57,7 +65,7 @@ app.on("window-all-closed", () => { if (restarting) { restarting = false winManager.createWindow() - } else if (process.platform !== "darwin") { + } else { app.quit() } }) diff --git a/src/main/utils.ts b/src/main/utils.ts index 0d0ad4a..a2e86f7 100644 --- a/src/main/utils.ts +++ b/src/main/utils.ts @@ -111,13 +111,7 @@ export function setUtilsListeners(manager: WindowManager) { }) ipcMain.handle("maximize-window", () => { - if (manager.hasWindow) { - if (manager.mainWindow.isMaximized()) { - manager.mainWindow.unmaximize() - } else { - manager.mainWindow.maximize() - } - } + manager.zoom() }) ipcMain.on("is-maximized", (event) => { diff --git a/src/main/window.ts b/src/main/window.ts index ce1ec2a..54c606f 100644 --- a/src/main/window.ts +++ b/src/main/window.ts @@ -80,6 +80,16 @@ export class WindowManager { } } + zoom = () => { + if (this.hasWindow()) { + if (this.mainWindow.isMaximized()) { + this.mainWindow.unmaximize() + } else { + this.mainWindow.maximize() + } + } + } + hasWindow = () => { return this.mainWindow !== null && !this.mainWindow.isDestroyed() }