Merge pull request #289 from feross/fix-tray

Windows/Linux: Fix broken Quit option in Tray icon
This commit is contained in:
Feross Aboukhadijeh
2016-04-04 13:50:32 -07:00
3 changed files with 20 additions and 22 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

@@ -16,15 +16,13 @@ var updateDotExe = path.join(process.execPath, '..', '..', 'Update.exe')
function handleEvent (cmd) {
if (cmd === '--squirrel-install') {
// App was installed.
// Install desktop/start menu shortcuts.
// App was installed. Install desktop/start menu shortcuts.
createShortcuts(function () {
// Ensure user sees install splash screen so they realize that Setup.exe actually
// installed an application and isn't the application itself.
setTimeout(function () {
app.quit()
}, 5000)
}, 3000)
})
return true
}

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 */
}