fix: harden Windows single-instance startup (#498)
This commit is contained in:
committed by
GitHub
Unverified
parent
0cdafde2df
commit
04aa94f907
38
electron/main/main-window-focus.ts
Normal file
38
electron/main/main-window-focus.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
export interface MainWindowFocusState {
|
||||
pendingSecondInstanceFocus: boolean;
|
||||
}
|
||||
|
||||
export type SecondInstanceFocusRequest = 'focus-now' | 'defer';
|
||||
export type MainWindowReadyAction = 'show' | 'focus';
|
||||
|
||||
export function createMainWindowFocusState(): MainWindowFocusState {
|
||||
return {
|
||||
pendingSecondInstanceFocus: false,
|
||||
};
|
||||
}
|
||||
|
||||
export function requestSecondInstanceFocus(
|
||||
state: MainWindowFocusState,
|
||||
hasFocusableMainWindow: boolean,
|
||||
): SecondInstanceFocusRequest {
|
||||
if (hasFocusableMainWindow) {
|
||||
state.pendingSecondInstanceFocus = false;
|
||||
return 'focus-now';
|
||||
}
|
||||
|
||||
state.pendingSecondInstanceFocus = true;
|
||||
return 'defer';
|
||||
}
|
||||
|
||||
export function consumeMainWindowReady(state: MainWindowFocusState): MainWindowReadyAction {
|
||||
if (state.pendingSecondInstanceFocus) {
|
||||
state.pendingSecondInstanceFocus = false;
|
||||
return 'focus';
|
||||
}
|
||||
|
||||
return 'show';
|
||||
}
|
||||
|
||||
export function clearPendingSecondInstanceFocus(state: MainWindowFocusState): void {
|
||||
state.pendingSecondInstanceFocus = false;
|
||||
}
|
||||
Reference in New Issue
Block a user