Feature/middle click open in new independent window (#1895)
* ^ Update electron 15.x * ^ Update electron 15.x > 16.x This fixes the issue of white flash on new window shown before event `ready-to-show` even window created with option `backgroundColor` * * Update `createWindow` to pass options via an object instead of positional arguments * * Implement windows opening with new window won't be closed when "parent" window closed * * Update new window opened via middle click to be shown immediately Matches current behaviour and better user experience (due to elimination of delay from the click to window appearance) * * Update new window button to show new window faster * * Only focus on new window on event `ready-to-show` if new window is not already shown * Update src/main/index.js Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
This commit is contained in:
parent
46316bd2a7
commit
bf63c864a3
|
@ -108,7 +108,7 @@
|
||||||
"babel-loader": "^8.2.2",
|
"babel-loader": "^8.2.2",
|
||||||
"copy-webpack-plugin": "^9.0.1",
|
"copy-webpack-plugin": "^9.0.1",
|
||||||
"css-loader": "5.2.6",
|
"css-loader": "5.2.6",
|
||||||
"electron": "^15.3.3",
|
"electron": "^16.0.8",
|
||||||
"electron-builder": "^22.11.7",
|
"electron-builder": "^22.11.7",
|
||||||
"electron-builder-squirrel-windows": "^22.13.1",
|
"electron-builder-squirrel-windows": "^22.13.1",
|
||||||
"electron-debug": "^3.2.0",
|
"electron-debug": "^3.2.0",
|
||||||
|
|
|
@ -171,7 +171,7 @@ function runApp() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createWindow(replaceMainWindow = true) {
|
async function createWindow({ replaceMainWindow = true, windowStartupUrl = null, showWindowNow = false } = { }) {
|
||||||
/**
|
/**
|
||||||
* Initial window options
|
* Initial window options
|
||||||
*/
|
*/
|
||||||
|
@ -195,7 +195,7 @@ function runApp() {
|
||||||
Object.assign(
|
Object.assign(
|
||||||
{
|
{
|
||||||
// It will be shown later when ready via `ready-to-show` event
|
// It will be shown later when ready via `ready-to-show` event
|
||||||
show: false
|
show: showWindowNow
|
||||||
},
|
},
|
||||||
commonBrowserWindowOptions
|
commonBrowserWindowOptions
|
||||||
)
|
)
|
||||||
|
@ -204,16 +204,14 @@ function runApp() {
|
||||||
// region Ensure child windows use same options since electron 14
|
// region Ensure child windows use same options since electron 14
|
||||||
|
|
||||||
// https://github.com/electron/electron/blob/14-x-y/docs/api/window-open.md#native-window-example
|
// https://github.com/electron/electron/blob/14-x-y/docs/api/window-open.md#native-window-example
|
||||||
newWindow.webContents.setWindowOpenHandler(() => {
|
newWindow.webContents.setWindowOpenHandler((details) => {
|
||||||
|
createWindow({
|
||||||
|
replaceMainWindow: false,
|
||||||
|
showWindowNow: true,
|
||||||
|
windowStartupUrl: details.url
|
||||||
|
})
|
||||||
return {
|
return {
|
||||||
action: 'allow',
|
action: 'deny'
|
||||||
overrideBrowserWindowOptions: Object.assign(
|
|
||||||
{
|
|
||||||
// It should be visible on click
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
commonBrowserWindowOptions
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -257,10 +255,18 @@ function runApp() {
|
||||||
|
|
||||||
// load root file/url
|
// load root file/url
|
||||||
if (isDev) {
|
if (isDev) {
|
||||||
newWindow.loadURL('http://localhost:9080')
|
let devStartupURL = 'http://localhost:9080'
|
||||||
|
if (windowStartupUrl != null) {
|
||||||
|
devStartupURL = windowStartupUrl
|
||||||
|
}
|
||||||
|
newWindow.loadURL(devStartupURL)
|
||||||
|
} else {
|
||||||
|
if (windowStartupUrl != null) {
|
||||||
|
newWindow.loadURL(windowStartupUrl)
|
||||||
} else {
|
} else {
|
||||||
/* eslint-disable-next-line */
|
/* eslint-disable-next-line */
|
||||||
newWindow.loadFile(`${__dirname}/index.html`)
|
newWindow.loadFile(`${__dirname}/index.html`)
|
||||||
|
}
|
||||||
|
|
||||||
global.__static = path
|
global.__static = path
|
||||||
.join(__dirname, '/static')
|
.join(__dirname, '/static')
|
||||||
|
@ -269,6 +275,8 @@ function runApp() {
|
||||||
|
|
||||||
// Show when loaded
|
// Show when loaded
|
||||||
newWindow.once('ready-to-show', () => {
|
newWindow.once('ready-to-show', () => {
|
||||||
|
if (newWindow.isVisible()) { return }
|
||||||
|
|
||||||
newWindow.show()
|
newWindow.show()
|
||||||
newWindow.focus()
|
newWindow.focus()
|
||||||
})
|
})
|
||||||
|
@ -381,7 +389,10 @@ function runApp() {
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.on(IpcChannels.CREATE_NEW_WINDOW, () => {
|
ipcMain.on(IpcChannels.CREATE_NEW_WINDOW, () => {
|
||||||
createWindow(false)
|
createWindow({
|
||||||
|
replaceMainWindow: false,
|
||||||
|
showWindowNow: true
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.on(IpcChannels.OPEN_IN_EXTERNAL_PLAYER, (_, payload) => {
|
ipcMain.on(IpcChannels.OPEN_IN_EXTERNAL_PLAYER, (_, payload) => {
|
||||||
|
|
|
@ -3543,10 +3543,10 @@ electron-to-chromium@^1.3.830:
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.836.tgz#823cb9c98f28c64c673920f1c90ea3826596eaf9"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.836.tgz#823cb9c98f28c64c673920f1c90ea3826596eaf9"
|
||||||
integrity sha512-Ney3pHOJBWkG/AqYjrW0hr2AUCsao+2uvq9HUlRP8OlpSdk/zOHOUJP7eu0icDvePC9DlgffuelP4TnOJmMRUg==
|
integrity sha512-Ney3pHOJBWkG/AqYjrW0hr2AUCsao+2uvq9HUlRP8OlpSdk/zOHOUJP7eu0icDvePC9DlgffuelP4TnOJmMRUg==
|
||||||
|
|
||||||
electron@^15.3.3:
|
electron@^16.0.8:
|
||||||
version "15.3.3"
|
version "16.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/electron/-/electron-15.3.3.tgz#e66c6c6fbcd74641dbfafe5e101228d2b7734c7b"
|
resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.8.tgz#7ebd3e23c4883c239f53d8b7af1100f455ac8a02"
|
||||||
integrity sha512-tr4UaMosN6+s8vSbx6OxqRXDTTCBjjJkmDMv0b0sg8f+cRFQeY0u7xYbULpXS4B1+hHJmdh7Nz40Qpv0bJXa6w==
|
integrity sha512-znTVkl8LaGcPNdfc6SRr+6LYg2GtSCKXln/nW/PC+urBfAFnOYIuDock8QyGVFfzr5PuAa+g8YQQAboHV77D7g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@electron/get" "^1.13.0"
|
"@electron/get" "^1.13.0"
|
||||||
"@types/node" "^14.6.2"
|
"@types/node" "^14.6.2"
|
||||||
|
|
Loading…
Reference in New Issue