fix(overlay): restore mpv focus and pointer state on macOS (#104)

This commit is contained in:
2026-05-31 21:25:04 -07:00
committed by GitHub
parent e1ea464bc9
commit b510c54875
21 changed files with 373 additions and 28 deletions
@@ -0,0 +1,33 @@
type RefreshableWindowTracker = {
refreshNow: () => Promise<void>;
};
export type MacOSModalFocusHandoffDeps = {
platform: NodeJS.Platform;
focusMpv: () => Promise<void>;
getWindowTracker: () => RefreshableWindowTracker | null;
updateVisibleOverlayVisibility: () => void;
warn: (message: string, details?: unknown) => void;
};
export async function restoreMacOSMpvFocusAfterModalClose(
deps: MacOSModalFocusHandoffDeps,
): Promise<void> {
if (deps.platform !== 'darwin') {
return;
}
try {
await deps.focusMpv();
} catch (error) {
deps.warn('Failed to focus mpv after macOS modal close', error);
}
try {
await deps.getWindowTracker()?.refreshNow();
} catch (error) {
deps.warn('Failed to refresh macOS mpv focus after modal close', error);
}
deps.updateVisibleOverlayVisibility();
}