mirror of
https://github.com/qier222/YesPlayMusic.git
synced 2024-11-21 20:54:57 +08:00
refactor: hide window when close app (#78)
fix: window can't be close by shortcutkey fix: tray does not show in Windows
This commit is contained in:
parent
f68ae5c078
commit
b394ec0899
BIN
build/icons/menu@88.png
Normal file
BIN
build/icons/menu@88.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -17,6 +17,10 @@ const isDevelopment = process.env.NODE_ENV !== "production";
|
|||
// Keep a global reference of the window object, if you don't, the window will
|
||||
// be closed automatically when the JavaScript object is garbage collected.
|
||||
let win;
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
let tray;
|
||||
|
||||
let willQuitApp = false;
|
||||
|
||||
// ipcMain
|
||||
initIpcMain(win);
|
||||
|
@ -39,7 +43,7 @@ function createWindow() {
|
|||
win.setMenuBarVisibility(false);
|
||||
|
||||
if (process.platform !== "darwin") {
|
||||
createTray(win);
|
||||
tray = createTray(win);
|
||||
}
|
||||
|
||||
if (process.env.WEBPACK_DEV_SERVER_URL) {
|
||||
|
@ -60,9 +64,19 @@ function createWindow() {
|
|||
e.preventDefault();
|
||||
shell.openExternal(url);
|
||||
});
|
||||
win.on("closed", () => {
|
||||
win = null;
|
||||
win.on("close", (e) => {
|
||||
if (willQuitApp) {
|
||||
/* the user tried to quit the app */
|
||||
win = null;
|
||||
} else {
|
||||
/* the user only tried to close the window */
|
||||
e.preventDefault();
|
||||
win.hide();
|
||||
}
|
||||
});
|
||||
// win.on("closed", () => {
|
||||
// win = null;
|
||||
// });
|
||||
return win;
|
||||
}
|
||||
|
||||
|
@ -71,7 +85,7 @@ app.on("window-all-closed", () => {
|
|||
// On macOS it is common for applications and their menu bar
|
||||
// to stay active until the user quits explicitly with Cmd + Q
|
||||
if (process.platform !== "darwin") {
|
||||
app.quit();
|
||||
// app.quit();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -80,9 +94,16 @@ app.on("activate", () => {
|
|||
// dock icon is clicked and there are no other windows open.
|
||||
if (win === null) {
|
||||
createWindow();
|
||||
} else {
|
||||
win.show();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 'before-quit' is emitted when Electron receives the signal to exit and wants to start closing windows
|
||||
*/
|
||||
app.on("before-quit", () => (willQuitApp = true));
|
||||
|
||||
// This method will be called when Electron has finished
|
||||
// initialization and is ready to create browser windows.
|
||||
// Some APIs can only be used after this event occurs.
|
||||
|
|
|
@ -33,8 +33,9 @@ export function initIpcMain(win) {
|
|||
});
|
||||
|
||||
ipcMain.on("close", () => {
|
||||
win.close();
|
||||
app.quit();
|
||||
win.hide();
|
||||
// win.close();
|
||||
// app.quit();
|
||||
});
|
||||
|
||||
ipcMain.on("minimize", () => {
|
||||
|
|
|
@ -128,6 +128,7 @@ export function createMenu(win) {
|
|||
{
|
||||
label: "Window",
|
||||
submenu: [
|
||||
{ role: "close" },
|
||||
{ role: "minimize" },
|
||||
{ role: "zoom" },
|
||||
{ role: "reload" },
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* global __static */
|
||||
import path from "path";
|
||||
import { nativeImage, Tray } from "electron";
|
||||
import { app, nativeImage, Tray, Menu } from "electron";
|
||||
|
||||
export function createTray(win) {
|
||||
let icon = nativeImage
|
||||
|
@ -17,5 +18,18 @@ export function createTray(win) {
|
|||
win.show();
|
||||
}
|
||||
});
|
||||
|
||||
tray.on("right-click", () => {
|
||||
const contextMenu = Menu.buildFromTemplate([
|
||||
{
|
||||
label: "Quit",
|
||||
click: () => {
|
||||
app.exit();
|
||||
},
|
||||
},
|
||||
]);
|
||||
tray.popUpContextMenu(contextMenu);
|
||||
});
|
||||
|
||||
return tray;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user