diff --git a/public/electron.js b/public/electron.js index b4012e4..f431e9c 100644 --- a/public/electron.js +++ b/public/electron.js @@ -29,14 +29,22 @@ let launchHidden = false; let firstMountCheck = true; let manualMountDetection = {}; +let isShutdown = false; let isQuiting = false; +let isInstalling = false; app.on('before-quit', function () { isQuiting = true; }); function closeApplication() { - app.quit(); + if (!isShutdown) { + isShutdown = true; + if (mainWindowTray) { + mainWindowTray.destroy(); + } + app.quit(); + } } function setWindowVisibility(show) { @@ -187,12 +195,10 @@ function createWindow() { mainWindow.loadURL(startUrl); } -const instanceLock = app.requestSingleInstanceLock(); -if (!instanceLock) { - closeApplication(); -} else { +let instanceLock = app.requestSingleInstanceLock(); +const configurePrimaryApp = () => { app.on('second-instance', () => { - if (mainWindow) { + if (!isInstalling && mainWindow) { setWindowVisibility(true); } }); @@ -202,6 +208,17 @@ if (!instanceLock) { app.on('window-all-closed', () => { closeApplication(); }); +}; +if (!instanceLock) { + setTimeout(() => { + if ((instanceLock = app.requestSingleInstanceLock())) { + configurePrimaryApp(); + } else { + closeApplication(); + } + }, 3000); +} else { + configurePrimaryApp(); } const clearManualMountDetection = (provider) => { @@ -757,6 +774,7 @@ ipcMain.on(Constants.IPC_Install_Upgrade, (event, data) => { if (command) { const executeInstall = () => { + isInstalling = true; helpers .executeAsync(command, args) .then(() => { @@ -764,6 +782,7 @@ ipcMain.on(Constants.IPC_Install_Upgrade, (event, data) => { standardIPCReply(event, Constants.IPC_Install_Upgrade_Reply) }) .catch(error => { + isInstalling = false; errorHandler(error); }); }; diff --git a/src/components/DownloadProgress/DownloadProgress.js b/src/components/DownloadProgress/DownloadProgress.js index 7efed3f..e1a0d35 100644 --- a/src/components/DownloadProgress/DownloadProgress.js +++ b/src/components/DownloadProgress/DownloadProgress.js @@ -7,12 +7,14 @@ const mapStateToProps = state => { return { DownloadName: state.download.DownloadName, DownloadProgress: state.download.DownloadProgress, + Platform: state.common.Platform, }; }; export default connect(mapStateToProps)(props => { + const width = props.Platform === 'linux' ? '480px' : '380px'; return ( - +

{'Downloading ' + props.DownloadName}