From 9ac18e071e0276e06d8577dce809188b7820eb83 Mon Sep 17 00:00:00 2001 From: zweicoder Date: Sat, 23 Jan 2016 14:33:55 +0800 Subject: [PATCH 1/7] Implement Electron Window State Manager --- app/package.json | 1 + app/src/main.js | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/package.json b/app/package.json index bb16caa..96aa2a8 100644 --- a/app/package.json +++ b/app/package.json @@ -4,6 +4,7 @@ "description": "Placeholder for the nativefier cli to override with a target url", "main": "lib/main.js", "dependencies": { + "electron-window-state": "^2.0.0", "wurl": "^2.1.0" }, "devDependencies": {}, diff --git a/app/src/main.js b/app/src/main.js index 1fefbcb..b93a557 100644 --- a/app/src/main.js +++ b/app/src/main.js @@ -8,7 +8,7 @@ var electron = require('electron'); var createMainWindow = require('./components/mainWindow/mainWindow'); var createLoginWindow = require('./components/login/loginWindow'); var helpers = require('./helpers/helpers'); - +var windowStateKeeper = require('electron-window-state'); var app = electron.app; var ipcMain = electron.ipcMain; var isOSX = helpers.isOSX; @@ -47,7 +47,12 @@ app.on('before-quit', function () { }); app.on('ready', function () { + var mainWindowState = windowStateKeeper({ + defaultWidth: appArgs.width || 1280, + defaultHeight: appArgs.height || 800 + }); mainWindow = createMainWindow(appArgs, app.quit, app.dock.setBadge); + mainWindowState.manage(mainWindow); }); app.on('login', function(event, webContents, request, authInfo, callback) { From 09777f38c84552ef94277cfae8236f0670b43a83 Mon Sep 17 00:00:00 2001 From: zweicoder Date: Sat, 23 Jan 2016 14:47:07 +0800 Subject: [PATCH 2/7] Remove unused watchify import --- gulpfile.babel.js | 1 - 1 file changed, 1 deletion(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 43c3186..e8de1b8 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -3,7 +3,6 @@ import del from 'del'; import sourcemaps from 'gulp-sourcemaps'; import webpack from 'webpack-stream'; import babel from 'gulp-babel'; -import watchify from 'watchify'; import runSequence from 'run-sequence'; import path from 'path'; From 1685407e7a6d25a8e6b2d788b299c4ccdf06d433 Mon Sep 17 00:00:00 2001 From: zweicoder Date: Sat, 23 Jan 2016 14:52:13 +0800 Subject: [PATCH 3/7] Integrate window state manager with BrowserWindow --- app/src/components/mainWindow/mainWindow.js | 14 +++++++++++--- app/src/main.js | 6 ------ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/src/components/mainWindow/mainWindow.js b/app/src/components/mainWindow/mainWindow.js index 27eeeaa..d6b8e15 100644 --- a/app/src/components/mainWindow/mainWindow.js +++ b/app/src/components/mainWindow/mainWindow.js @@ -2,7 +2,7 @@ var path = require('path'); var electron = require('electron'); var helpers = require('./../../helpers/helpers'); var createMenu = require('./../menu/menu'); - +var windowStateKeeper = require('electron-window-state'); var BrowserWindow = electron.BrowserWindow; var shell = electron.shell; var isOSX = helpers.isOSX; @@ -18,10 +18,16 @@ const ZOOM_INTERVAL = 0.1; * @returns {electron.BrowserWindow} */ function createMainWindow(options, onAppQuit, setDockBadge) { + var mainWindowState = windowStateKeeper({ + defaultWidth: options.width || 1280, + defaultHeight: options.height || 800 + }); var mainWindow = new BrowserWindow( { - width: options.width || 1280, - height: options.height || 800, + width: mainWindowState.width, + height: mainWindowState.height, + x: mainWindowState.x, + y: mainWindowState.y, 'web-preferences': { javascript: true, plugins: true, @@ -99,6 +105,8 @@ function createMainWindow(options, onAppQuit, setDockBadge) { } }); + mainWindowState.manage(mainWindow); + return mainWindow; } diff --git a/app/src/main.js b/app/src/main.js index b93a557..b8abbec 100644 --- a/app/src/main.js +++ b/app/src/main.js @@ -8,7 +8,6 @@ var electron = require('electron'); var createMainWindow = require('./components/mainWindow/mainWindow'); var createLoginWindow = require('./components/login/loginWindow'); var helpers = require('./helpers/helpers'); -var windowStateKeeper = require('electron-window-state'); var app = electron.app; var ipcMain = electron.ipcMain; var isOSX = helpers.isOSX; @@ -47,12 +46,7 @@ app.on('before-quit', function () { }); app.on('ready', function () { - var mainWindowState = windowStateKeeper({ - defaultWidth: appArgs.width || 1280, - defaultHeight: appArgs.height || 800 - }); mainWindow = createMainWindow(appArgs, app.quit, app.dock.setBadge); - mainWindowState.manage(mainWindow); }); app.on('login', function(event, webContents, request, authInfo, callback) { From d818f6cfaa3010cc77122ca1ef473122b4de2b45 Mon Sep 17 00:00:00 2001 From: zweicoder Date: Sat, 23 Jan 2016 14:59:33 +0800 Subject: [PATCH 4/7] Remove prepublish from causing errors --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 404f8d7..f7f1b72 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "test": "echo \"Error: no test specified\" && exit 1", "build": "gulp build", "watch": "while true ; do gulp watch ; done", - "prepublish": "npm run build", "package-placeholder": "npm run build && node lib/cli.js http://www.medium.com ~/Desktop --overwrite && open ~/Desktop/Medium-darwin-x64/Medium.app", "start-placeholder": "npm run build && electron app", "clean": "gulp clean" From 26ce134de8d80fbf45431cb05509266324eb2060 Mon Sep 17 00:00:00 2001 From: zweicoder Date: Sat, 23 Jan 2016 15:10:02 +0800 Subject: [PATCH 5/7] Fix obsession with Mac --- app/src/components/mainWindow/mainWindow.js | 5 ++++- app/src/main.js | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/components/mainWindow/mainWindow.js b/app/src/components/mainWindow/mainWindow.js index d6b8e15..2068616 100644 --- a/app/src/components/mainWindow/mainWindow.js +++ b/app/src/components/mainWindow/mainWindow.js @@ -17,7 +17,10 @@ const ZOOM_INTERVAL = 0.1; * @param {electron.app.dock.setBadge} setDockBadge * @returns {electron.BrowserWindow} */ -function createMainWindow(options, onAppQuit, setDockBadge) { +function createMainWindow(options, {quit: onAppQuit, dock}) { + if(dock){ + setDockBadge = dock.setBadge + } var mainWindowState = windowStateKeeper({ defaultWidth: options.width || 1280, defaultHeight: options.height || 800 diff --git a/app/src/main.js b/app/src/main.js index b8abbec..0d73fc7 100644 --- a/app/src/main.js +++ b/app/src/main.js @@ -46,7 +46,7 @@ app.on('before-quit', function () { }); app.on('ready', function () { - mainWindow = createMainWindow(appArgs, app.quit, app.dock.setBadge); + mainWindow = createMainWindow(appArgs, app); }); app.on('login', function(event, webContents, request, authInfo, callback) { @@ -59,6 +59,6 @@ ipcMain.on('notification', function(event, title, opts) { if (!isOSX() || mainWindow.isFocused()) { return; } - + console.log(isOSX()); app.dock.setBadge('●'); }); From b6862d0c06120e042377bedfe58ba104f69afb93 Mon Sep 17 00:00:00 2001 From: zweicoder Date: Sat, 23 Jan 2016 15:20:21 +0800 Subject: [PATCH 6/7] Merge branch 'upstream' into feature/window-state-manager --- app/src/components/mainWindow/mainWindow.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/components/mainWindow/mainWindow.js b/app/src/components/mainWindow/mainWindow.js index 2068616..0356523 100644 --- a/app/src/components/mainWindow/mainWindow.js +++ b/app/src/components/mainWindow/mainWindow.js @@ -31,6 +31,7 @@ function createMainWindow(options, {quit: onAppQuit, dock}) { height: mainWindowState.height, x: mainWindowState.x, y: mainWindowState.y, + title: options.name, 'web-preferences': { javascript: true, plugins: true, @@ -100,17 +101,25 @@ function createMainWindow(options, {quit: onAppQuit, dock}) { setDockBadge(''); }); - mainWindow.on('close', (e) => { - if (isOSX()) { - // this is called when exiting from clicking the cross button on the window - e.preventDefault(); - mainWindow.hide(); + mainWindow.on('close', event => { + if (mainWindow.isFullScreen()) { + mainWindow.setFullScreen(false); + mainWindow.once('leave-full-screen', maybeHideWindow.bind(this, mainWindow, event)); } + maybeHideWindow(mainWindow, event) }); mainWindowState.manage(mainWindow); - return mainWindow; } +function maybeHideWindow(window, event) { + if (isOSX()) { + // this is called when exiting from clicking the cross button on the window + event.preventDefault(); + window.hide(); + } + // will close the window on other platforms +} + module.exports = createMainWindow; From c77dfe5f27ad15f3cd052602787fa108c2ebd86d Mon Sep 17 00:00:00 2001 From: zweicoder Date: Sat, 23 Jan 2016 15:22:25 +0800 Subject: [PATCH 7/7] Remove log --- app/src/main.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main.js b/app/src/main.js index 0d73fc7..0df3124 100644 --- a/app/src/main.js +++ b/app/src/main.js @@ -59,6 +59,5 @@ ipcMain.on('notification', function(event, title, opts) { if (!isOSX() || mainWindow.isFocused()) { return; } - console.log(isOSX()); app.dock.setBadge('●'); });