修复软件关闭时的bug

master
qubiaobiao 2024-04-08 09:25:44 +08:00
parent 78e1b7128a
commit d06c66ad39
1 changed files with 24 additions and 48 deletions

View File

@ -121,65 +121,41 @@ const getDisplayOrigin = (display: any) => {
return origin return origin
} }
var windows:Array<BrowserWindow> = [];
function createWindow(option: any, url: any) { function createWindow(option: any, url: any) {
const win = new BrowserWindow(option) const win = new BrowserWindow(option)
if (URl_REGEX.test(url)) { if (URl_REGEX.test(url)) {
win.loadURL(url) win.loadURL(url)
} else { } else {
win.loadFile(url) win.loadFile(url)
} }
if(process.env.NODE_ENV === 'development') win.webContents.openDevTools()
windows.push(win);
}
const isWindows = process.platform === 'win32'; ipcMain.on('CLOSE', (event) => {
let needsFocusFix = false; const res = dialog.showMessageBox({
let triggeringProgrammaticBlur = false; type: 'warning',
title: '警告',
//弹出警报窗口后 input获取不到焦点 message: '确定要关闭软件吗?',
win.on('blur', (event: any) => { detail: '关闭软件',
if(!triggeringProgrammaticBlur) { cancelId: 1, // 按esc默认点击索引按钮
needsFocusFix = true; defaultId: 0, // 默认高亮的按钮下标
} buttons: ['确认', '取消'], // 按钮按索引从右往左排序
})
win.on('focus', (event: any) => {
if(isWindows && needsFocusFix) {
needsFocusFix = false;
triggeringProgrammaticBlur = true;
//弹出弹窗后重新聚焦导致windows任务栏显示重新隐藏底部windows任务栏
win.minimize(); //最小化函数
win.restore(); //取消最小化函数(从最小化窗口还原函数)
setTimeout(function () {
win.blur(); //失去焦点函数
win.focus(); //获取焦点函数
setTimeout(function () {
triggeringProgrammaticBlur = false;
}, 100);
}, 100);
}
}) })
if(process.env.NODE_ENV === 'development') win.webContents.openDevTools() res.then((data)=>{
if(data.response == 0){
ipcMain.on('CLOSE', (event) => { windows.forEach((key:BrowserWindow) => {
const res = dialog.showMessageBox({ key.close();
type: 'warning', });
title: '警告', windows = [];
message: '确定要关闭软件吗?', }else{
detail: '关闭软件', console.log('not close software')
cancelId: 1, // 按esc默认点击索引按钮 }
defaultId: 0, // 默认高亮的按钮下标
buttons: ['确认', '取消'], // 按钮按索引从右往左排序
})
res.then((data)=>{
if(data.response == 0){
win.close()
}else{
console.log('not close software')
}
})
}) })
} })
app.whenReady().then(() => { app.whenReady().then(() => {
launch() launch()