Windows/Linux: Fix broken Quit option in Tray icon

This also cleans up the code by handling quit in the same way for all
platforms, removing the special case in tray.js for darwin.

We already have a 'before-quit' handler in main/index.js, so this is
now handled there :)
This commit is contained in:
Feross Aboukhadijeh
2016-04-04 13:40:27 -07:00
parent 9d8e79fb35
commit ccaf0de63d
2 changed files with 18 additions and 18 deletions

View File

@@ -1,6 +1,7 @@
var electron = require('electron')
var app = electron.app
var ipcMain = electron.ipcMain
var autoUpdater = require('./auto-updater')
var config = require('../config')
@@ -62,8 +63,14 @@ function init () {
processArgv(argv)
})
app.on('before-quit', function () {
app.on('before-quit', function (e) {
if (app.isQuitting) return
app.isQuitting = true
e.preventDefault()
windows.main.send('dispatch', 'saveState') /* try to save state on exit */
ipcMain.once('savedState', () => app.quit())
setTimeout(() => app.quit(), 2000) /* quit after 2 secs, at most */
})
app.on('activate', function () {

View File

@@ -4,20 +4,20 @@ module.exports = {
var path = require('path')
var electron = require('electron')
var app = electron.app
var Menu = electron.Menu
var Tray = electron.Tray
var windows = require('./windows')
var trayIcon
function init () {
if (process.platform === 'darwin') {
// Instead of relying on the tray icon quit button, listen for Cmd+Q
electron.app.once('before-quit', quitApp)
// OS X has no tray icon
if (process.platform === 'darwin') return
// OS X has no tray icon
return
}
trayIcon = new electron.Tray(path.join(__dirname, '..', 'static', 'WebTorrentSmall.png'))
trayIcon = new Tray(path.join(__dirname, '..', 'static', 'WebTorrentSmall.png'))
// On Windows, left click to open the app, right click for context menu
// On Linux, any click (right or left) opens the context menu
@@ -36,9 +36,9 @@ function updateTrayMenu () {
} else {
showHideMenuItem = { label: 'Show', click: showApp }
}
var contextMenu = electron.Menu.buildFromTemplate([
var contextMenu = Menu.buildFromTemplate([
showHideMenuItem,
{ label: 'Quit', click: quitApp }
{ label: 'Quit', click: () => app.quit() }
])
trayIcon.setContextMenu(contextMenu)
}
@@ -50,10 +50,3 @@ function showApp () {
function hideApp () {
windows.main.hide()
}
function quitApp (e) {
e.preventDefault()
windows.main.send('dispatch', 'saveState') /* try to save state on exit */
electron.ipcMain.once('savedState', () => electron.app.quit())
setTimeout(() => electron.app.quit(), 2000) /* exit after at most 2 secs */
}