Merge pull request #173 from vector-im/gsouquet-warn-before-exit

This commit is contained in:
Germain 2021-03-29 12:12:27 +01:00 committed by GitHub
commit 76eef82274
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -27,7 +27,9 @@ const argv = require('minimist')(process.argv, {
alias: {help: "h"},
});
const {app, ipcMain, powerSaveBlocker, BrowserWindow, Menu, autoUpdater, protocol} = require('electron');
const {
app, ipcMain, powerSaveBlocker, BrowserWindow, Menu, autoUpdater, protocol, dialog, globalShortcut,
} = require('electron');
const AutoLaunch = require('auto-launch');
const path = require('path');
@ -253,6 +255,22 @@ let eventIndex = null;
let mainWindow = null;
global.appQuitting = false;
const warnBeforeExit = (event) => {
if (store.get('warnBeforeExit', true)) {
const shouldCancelCloseRequest = dialog.showMessageBoxSync(mainWindow, {
type: "question",
buttons: ["Cancel", "Close Element"],
message: "Are you sure you want to quit?",
defaultId: 1,
cancelId: 0,
}) === 0;
if (shouldCancelCloseRequest) {
event.preventDefault();
return false;
}
}
};
const deleteContents = async (p) => {
for (const entry of await afs.readdir(p)) {
@ -340,6 +358,12 @@ ipcMain.on('ipcCall', async function(ev, payload) {
launcher.disable();
}
break;
case 'shouldWarnBeforeExit':
ret = store.get('warnBeforeExit', true);
break;
case 'setWarnBeforeExit':
store.set('warnBeforeExit', args[0]);
break;
case 'getMinimizeToTrayEnabled':
ret = tray.hasTray();
break;
@ -917,10 +941,16 @@ app.on('ready', async () => {
}
});
globalShortcut.register("CommandOrControl+Q", warnBeforeExit);
if (process.platform !== 'darwin') {
globalShortcut.register("Alt+F4", warnBeforeExit);
globalShortcut.register("AltGr+F4 ", warnBeforeExit);
}
mainWindow.on('closed', () => {
mainWindow = global.mainWindow = null;
});
mainWindow.on('close', (e) => {
mainWindow.on('close', async (e) => {
// If we are not quitting and have a tray icon then minimize to tray
if (!global.appQuitting && (tray.hasTray() || process.platform === 'darwin')) {
// On Mac, closing the window just hides it