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",
|
||||
"copy-webpack-plugin": "^9.0.1",
|
||||
"css-loader": "5.2.6",
|
||||
"electron": "^15.3.3",
|
||||
"electron": "^16.0.8",
|
||||
"electron-builder": "^22.11.7",
|
||||
"electron-builder-squirrel-windows": "^22.13.1",
|
||||
"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
|
||||
*/
|
||||
|
@ -195,7 +195,7 @@ function runApp() {
|
|||
Object.assign(
|
||||
{
|
||||
// It will be shown later when ready via `ready-to-show` event
|
||||
show: false
|
||||
show: showWindowNow
|
||||
},
|
||||
commonBrowserWindowOptions
|
||||
)
|
||||
|
@ -204,16 +204,14 @@ function runApp() {
|
|||
// 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
|
||||
newWindow.webContents.setWindowOpenHandler(() => {
|
||||
newWindow.webContents.setWindowOpenHandler((details) => {
|
||||
createWindow({
|
||||
replaceMainWindow: false,
|
||||
showWindowNow: true,
|
||||
windowStartupUrl: details.url
|
||||
})
|
||||
return {
|
||||
action: 'allow',
|
||||
overrideBrowserWindowOptions: Object.assign(
|
||||
{
|
||||
// It should be visible on click
|
||||
show: true
|
||||
},
|
||||
commonBrowserWindowOptions
|
||||
)
|
||||
action: 'deny'
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -257,10 +255,18 @@ function runApp() {
|
|||
|
||||
// load root file/url
|
||||
if (isDev) {
|
||||
newWindow.loadURL('http://localhost:9080')
|
||||
let devStartupURL = 'http://localhost:9080'
|
||||
if (windowStartupUrl != null) {
|
||||
devStartupURL = windowStartupUrl
|
||||
}
|
||||
newWindow.loadURL(devStartupURL)
|
||||
} else {
|
||||
/* eslint-disable-next-line */
|
||||
newWindow.loadFile(`${__dirname}/index.html`)
|
||||
if (windowStartupUrl != null) {
|
||||
newWindow.loadURL(windowStartupUrl)
|
||||
} else {
|
||||
/* eslint-disable-next-line */
|
||||
newWindow.loadFile(`${__dirname}/index.html`)
|
||||
}
|
||||
|
||||
global.__static = path
|
||||
.join(__dirname, '/static')
|
||||
|
@ -269,6 +275,8 @@ function runApp() {
|
|||
|
||||
// Show when loaded
|
||||
newWindow.once('ready-to-show', () => {
|
||||
if (newWindow.isVisible()) { return }
|
||||
|
||||
newWindow.show()
|
||||
newWindow.focus()
|
||||
})
|
||||
|
@ -381,7 +389,10 @@ function runApp() {
|
|||
})
|
||||
|
||||
ipcMain.on(IpcChannels.CREATE_NEW_WINDOW, () => {
|
||||
createWindow(false)
|
||||
createWindow({
|
||||
replaceMainWindow: false,
|
||||
showWindowNow: true
|
||||
})
|
||||
})
|
||||
|
||||
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"
|
||||
integrity sha512-Ney3pHOJBWkG/AqYjrW0hr2AUCsao+2uvq9HUlRP8OlpSdk/zOHOUJP7eu0icDvePC9DlgffuelP4TnOJmMRUg==
|
||||
|
||||
electron@^15.3.3:
|
||||
version "15.3.3"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-15.3.3.tgz#e66c6c6fbcd74641dbfafe5e101228d2b7734c7b"
|
||||
integrity sha512-tr4UaMosN6+s8vSbx6OxqRXDTTCBjjJkmDMv0b0sg8f+cRFQeY0u7xYbULpXS4B1+hHJmdh7Nz40Qpv0bJXa6w==
|
||||
electron@^16.0.8:
|
||||
version "16.0.8"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.8.tgz#7ebd3e23c4883c239f53d8b7af1100f455ac8a02"
|
||||
integrity sha512-znTVkl8LaGcPNdfc6SRr+6LYg2GtSCKXln/nW/PC+urBfAFnOYIuDock8QyGVFfzr5PuAa+g8YQQAboHV77D7g==
|
||||
dependencies:
|
||||
"@electron/get" "^1.13.0"
|
||||
"@types/node" "^14.6.2"
|
||||
|
|
Loading…
Reference in New Issue