From 7833f6bbc455839126082c3abba1b03c51cf85bd Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Sat, 28 May 2016 19:09:05 -0700 Subject: [PATCH] Dialogs on do not show a title on OS X, so the window title is used instead. --- main/dialog.js | 46 +++++++++++++++++++++++++++++++++++++--------- renderer/main.js | 3 +++ 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/main/dialog.js b/main/dialog.js index 585dc68f..bf9d476f 100644 --- a/main/dialog.js +++ b/main/dialog.js @@ -5,6 +5,7 @@ module.exports = { openTorrentAddress } +var config = require('../config') var electron = require('electron') var windows = require('./windows') @@ -12,11 +13,14 @@ var windows = require('./windows') * Show open dialog to create a single-file torrent. */ function openSeedFile () { + if (!windows.main.win) return var opts = { - title: 'Select a file for the torrent file.', + title: 'Select a file for the torrent.', properties: [ 'openFile' ] } - electron.dialog.showOpenDialog(opts, function (selectedPaths) { + setTitle(opts.title) + electron.dialog.showOpenDialog(windows.main.win, opts, function (selectedPaths) { + resetTitle() if (!Array.isArray(selectedPaths)) return windows.main.send('dispatch', 'showCreateTorrent', selectedPaths) }) @@ -24,15 +28,23 @@ function openSeedFile () { /* * Show open dialog to create a single-file or single-directory torrent. On - * Windows and Linux, open dialogs are for files *or* directories only, not both. - * This function shows a directory dialog. + * Windows and Linux, open dialogs are for files *or* directories only, not both, + * so this function shows a directory dialog on those platforms. */ function openSeedDirectory () { - var opts = { - title: 'Select a file or folder for the torrent file.', - properties: [ 'openFile', 'openDirectory' ] - } - electron.dialog.showOpenDialog(opts, function (selectedPaths) { + if (!windows.main.win) return + var opts = process.platform === 'darwin' + ? { + title: 'Select a file or folder for the torrent.', + properties: [ 'openFile', 'openDirectory' ] + } + : { + title: 'Select a folder for the torrent.', + properties: [ 'openDirectory' ] + } + setTitle(opts.title) + electron.dialog.showOpenDialog(windows.main.win, opts, function (selectedPaths) { + resetTitle() if (!Array.isArray(selectedPaths)) return windows.main.send('dispatch', 'showCreateTorrent', selectedPaths) }) @@ -42,12 +54,15 @@ function openSeedDirectory () { * Show open dialog to open a .torrent file. */ function openTorrentFile () { + if (!windows.main.win) return var opts = { title: 'Select a .torrent file to open.', filters: [{ name: 'Torrent Files', extensions: ['torrent'] }], properties: [ 'openFile', 'multiSelections' ] } + setTitle(opts.title) electron.dialog.showOpenDialog(windows.main.win, opts, function (selectedPaths) { + resetTitle() if (!Array.isArray(selectedPaths)) return selectedPaths.forEach(function (selectedPath) { windows.main.send('dispatch', 'addTorrent', selectedPath) @@ -61,3 +76,16 @@ function openTorrentFile () { function openTorrentAddress () { windows.main.send('showOpenTorrentAddress') } + +/** + * Dialogs on do not show a title on OS X, so the window title is used instead. + */ +function setTitle (title) { + if (process.platform === 'darwin') { + windows.main.send('dispatch', 'setTitle', title) + } +} + +function resetTitle () { + setTitle(config.APP_WINDOW_TITLE) +} diff --git a/renderer/main.js b/renderer/main.js index 0e8330b1..19ad69fd 100644 --- a/renderer/main.js +++ b/renderer/main.js @@ -377,6 +377,9 @@ function dispatch (action, ...args) { if (action === 'saveState') { saveState() } + if (action === 'setTitle') { + state.window.title = args[0] /* title */ + } // Update the virtual-dom, unless it's just a mouse move event if (action !== 'mediaMouseMoved' || showOrHidePlayerControls()) {