Fix blank window when reopening after the main window is destroyed
registerSpellcheck()'s invoke-handler registration guard checked ipcMain.eventNames(), which only reflects .on()/.once() listeners -- handlers registered via ipcMain.handle() never show up there, so the guard was a no-op. With closeToTray disabled (or any other path that lets the main window actually close instead of hide), a second createWindow() call would hit "Attempted to register a second handler for 'spellcheck-get-state'", aborting window setup partway through and leaving a blank window. Use a real module-level flag instead, matching the pattern already used for this file's .on() listeners.
This commit is contained in:
@@ -133,6 +133,7 @@ const dictionaryDataPromises = new Map<string, Promise<SpellcheckDictionaryData
|
|||||||
|
|
||||||
let factoryPromise: Promise<HunspellFactory> | null = null;
|
let factoryPromise: Promise<HunspellFactory> | null = null;
|
||||||
let ipcRegistered = false;
|
let ipcRegistered = false;
|
||||||
|
let invokeHandlersRegistered = false;
|
||||||
let launchModeLogged = false;
|
let launchModeLogged = false;
|
||||||
|
|
||||||
const contextSourceByWebContents = new WeakMap<
|
const contextSourceByWebContents = new WeakMap<
|
||||||
@@ -1060,7 +1061,8 @@ export const registerSpellcheck = (webContents: WebContents): void => {
|
|||||||
return state;
|
return state;
|
||||||
};
|
};
|
||||||
void applyAndBroadcast(false);
|
void applyAndBroadcast(false);
|
||||||
if (!ipcMain.eventNames().includes('spellcheck-get-state')) {
|
if (!invokeHandlersRegistered) {
|
||||||
|
invokeHandlersRegistered = true;
|
||||||
ipcMain.handle('spellcheck-get-state', (event) => {
|
ipcMain.handle('spellcheck-get-state', (event) => {
|
||||||
const targetSession = event.sender.session;
|
const targetSession = event.sender.session;
|
||||||
const next = applyLaunchSpellcheckMode(sessionState.get(targetSession) ?? {...defaultState});
|
const next = applyLaunchSpellcheckMode(sessionState.get(targetSession) ?? {...defaultState});
|
||||||
|
|||||||
Reference in New Issue
Block a user