fix: win子窗口无法激活的情况

This commit is contained in:
kuaifan 2024-11-30 23:41:42 +08:00
parent 98d2627036
commit 964611eba4

18
electron/electron.js vendored
View File

@ -60,15 +60,14 @@ let childWindow = [],
let showState = {}, let showState = {},
onShowWindow = (win) => { onShowWindow = (win) => {
if (typeof showState[win.webContents.id] === 'undefined') {
try { try {
if (typeof showState[win.webContents.id] === 'undefined') {
showState[win.webContents.id] = true showState[win.webContents.id] = true
win.setBackgroundColor('rgba(255, 255, 255, 0)') win.setBackgroundColor('rgba(255, 255, 255, 0)')
win.show(); win.show();
} catch (e) {
showState[win.webContents.id] = false
// loger.error(e)
} }
} catch (e) {
// loger.error(e)
} }
} }
@ -277,7 +276,6 @@ function preCreateChildWindow() {
minHeight: 360, minHeight: 360,
center: true, center: true,
show: false, show: false,
parent: mainWindow,
autoHideMenuBar: true, autoHideMenuBar: true,
backgroundColor: utils.getDefaultBackgroundColor(), backgroundColor: utils.getDefaultBackgroundColor(),
webPreferences: { webPreferences: {
@ -335,7 +333,6 @@ function createChildWindow(args) {
minHeight: 360, minHeight: 360,
center: true, center: true,
show: false, show: false,
parent: mainWindow,
autoHideMenuBar: true, autoHideMenuBar: true,
backgroundColor: utils.getDefaultBackgroundColor(), backgroundColor: utils.getDefaultBackgroundColor(),
webPreferences: Object.assign({ webPreferences: Object.assign({
@ -346,20 +343,23 @@ function createChildWindow(args) {
nativeWindowOpen: true nativeWindowOpen: true
}, webPreferences), }, webPreferences),
}, config) }, config)
if (options.parent) {
options.parent = mainWindow
}
if (preloadWindow && Object.keys(webPreferences).length === 0) { if (preloadWindow && Object.keys(webPreferences).length === 0) {
// 使用预加载窗口 // 使用预加载窗口
browser = preloadWindow; browser = preloadWindow;
preloadWindow = null; preloadWindow = null;
isPreload = true; isPreload = true;
setTimeout(() => onShowWindow(browser), 300) options.parent && browser.setParentWindow(options.parent);
browser.once('resize', () => setTimeout(() => onShowWindow(browser), 10))
browser.setSize(options.width, options.height); browser.setSize(options.width, options.height);
browser.setMinimumSize(options.minWidth, options.minHeight); browser.setMinimumSize(options.minWidth, options.minHeight);
browser.center(); browser.center();
browser.setParentWindow(options.parent);
browser.setAutoHideMenuBar(options.autoHideMenuBar); browser.setAutoHideMenuBar(options.autoHideMenuBar);
browser.removeAllListeners("closed"); browser.removeAllListeners("closed");
setTimeout(() => onShowWindow(browser), 300)
process.nextTick(() => setTimeout(() => onShowWindow(browser), 50));
} else { } else {
// 创建新窗口 // 创建新窗口
browser = new BrowserWindow(options) browser = new BrowserWindow(options)