Merge pull request #162 from feross/osx-dock
Fix Exception when dropping .torrent file onto Dock icon when app is closed
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
var startTime = Date.now()
|
||||
|
||||
var electron = require('electron')
|
||||
var ipc = require('./ipc')
|
||||
var menu = require('./menu')
|
||||
@@ -8,8 +6,11 @@ var windows = require('./windows')
|
||||
|
||||
var app = electron.app
|
||||
|
||||
app.on('open-file', onOpen)
|
||||
app.on('open-url', onOpen)
|
||||
|
||||
app.ipcReady = false // main window has finished loading and IPC is ready
|
||||
app.isQuitting = false
|
||||
app.startTime = startTime
|
||||
|
||||
app.on('ready', function () {
|
||||
menu.init()
|
||||
@@ -17,9 +18,6 @@ app.on('ready', function () {
|
||||
shortcuts.init()
|
||||
})
|
||||
|
||||
app.on('open-file', onOpen)
|
||||
app.on('open-url', onOpen)
|
||||
|
||||
app.on('before-quit', function () {
|
||||
app.isQuitting = true
|
||||
})
|
||||
@@ -42,5 +40,13 @@ ipc.init()
|
||||
|
||||
function onOpen (e, torrentId) {
|
||||
e.preventDefault()
|
||||
windows.main.send('dispatch', 'openFiles', torrentId)
|
||||
console.log(app.ipcReady)
|
||||
if (app.ipcReady) {
|
||||
openFiles()
|
||||
} else {
|
||||
app.on('ipcReady', openFiles)
|
||||
}
|
||||
function openFiles () {
|
||||
windows.main.send('dispatch', 'openFiles', torrentId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ module.exports = {
|
||||
|
||||
var debug = require('debug')('webtorrent-app:ipcMain')
|
||||
var electron = require('electron')
|
||||
|
||||
var app = electron.app
|
||||
var ipcMain = electron.ipcMain
|
||||
var powerSaveBlocker = electron.powerSaveBlocker
|
||||
@@ -15,6 +16,12 @@ var windows = require('./windows')
|
||||
var powerSaveBlockID = 0
|
||||
|
||||
function init () {
|
||||
ipcMain.on('ipcReady', function (e) {
|
||||
console.timeEnd('init')
|
||||
app.ipcReady = true
|
||||
app.emit('ipcReady')
|
||||
})
|
||||
|
||||
ipcMain.on('showOpenTorrentFile', function (e) {
|
||||
menu.showOpenTorrentFile()
|
||||
})
|
||||
|
||||
@@ -7,12 +7,14 @@ module.exports = {
|
||||
toggleFullScreen: toggleFullScreen
|
||||
}
|
||||
|
||||
var config = require('../config')
|
||||
var debug = require('debug')('webtorrent-app:menu')
|
||||
var electron = require('electron')
|
||||
var windows = require('./windows')
|
||||
|
||||
var app = electron.app
|
||||
|
||||
var config = require('../config')
|
||||
var windows = require('./windows')
|
||||
|
||||
var appMenu, dockMenu
|
||||
|
||||
function init () {
|
||||
@@ -51,7 +53,6 @@ function toggleDevTools () {
|
||||
function reloadWindow () {
|
||||
debug('reloadWindow')
|
||||
if (windows.main) {
|
||||
app.startTime = Date.now()
|
||||
windows.main.webContents.reloadIgnoringCache()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,12 @@ module.exports = {
|
||||
|
||||
var electron = require('electron')
|
||||
var localShortcut = require('electron-localshortcut')
|
||||
var menu = require('./menu')
|
||||
var windows = require('./windows')
|
||||
|
||||
var globalShortcut = electron.globalShortcut
|
||||
|
||||
var menu = require('./menu')
|
||||
var windows = require('./windows')
|
||||
|
||||
function init () {
|
||||
// Special "media key" for play/pause, available on some keyboards
|
||||
globalShortcut.register('MediaPlayPause', () => windows.main.send('dispatch', 'playPause'))
|
||||
|
||||
@@ -3,19 +3,19 @@ var windows = module.exports = {
|
||||
createMainWindow: createMainWindow
|
||||
}
|
||||
|
||||
var config = require('../config')
|
||||
var debug = require('debug')('webtorrent-app:windows')
|
||||
var electron = require('electron')
|
||||
var ipcMain = electron.ipcMain
|
||||
var menu = require('./menu')
|
||||
|
||||
var app = electron.app
|
||||
var ipcMain = electron.ipcMain
|
||||
|
||||
var config = require('../config')
|
||||
var menu = require('./menu')
|
||||
|
||||
function createMainWindow () {
|
||||
var win = windows.main = new electron.BrowserWindow({
|
||||
autoHideMenuBar: true, // Hide top menu bar unless Alt key is pressed (Windows, Linux)
|
||||
backgroundColor: '#282828',
|
||||
darkTheme: true, // Forces dark theme (GTK+3 only)
|
||||
darkTheme: true, // Forces dark theme (GTK+3)
|
||||
icon: config.APP_ICON,
|
||||
minWidth: 375,
|
||||
minHeight: 38 + (120 * 2), // header height + 2 torrents
|
||||
@@ -32,7 +32,6 @@ function createMainWindow () {
|
||||
})
|
||||
|
||||
win.webContents.on('did-finish-load', function () {
|
||||
debug('startup time: %sms', Date.now() - app.startTime)
|
||||
win.show()
|
||||
})
|
||||
|
||||
|
||||
@@ -256,6 +256,8 @@ function jumpToTime (time) {
|
||||
}
|
||||
|
||||
function setupIpc () {
|
||||
ipcRenderer.send('ipcReady')
|
||||
|
||||
ipcRenderer.on('dispatch', function (e, action, ...args) {
|
||||
dispatch(action, ...args)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user