Files
SubMiner/src/main/runtime/stats-overlay-visibility.ts
T

34 lines
1.0 KiB
TypeScript

type StatsOverlayVisibilityWindow = {
isDestroyed: () => boolean;
isVisible: () => boolean;
setIgnoreMouseEvents: (ignore: boolean, options?: { forward?: boolean }) => void;
};
function makeOverlayMousePassive(window: StatsOverlayVisibilityWindow | null): void {
if (!window || window.isDestroyed() || !window.isVisible()) {
return;
}
window.setIgnoreMouseEvents(true, { forward: true });
}
export function createStatsOverlayVisibilityChangeHandler(deps: {
setStatsOverlayVisibleState: (visible: boolean) => void;
resetVisibleOverlayInteraction: () => void;
getMainWindow: () => StatsOverlayVisibilityWindow | null;
updateVisibleOverlayVisibility: () => void;
}) {
return (visible: boolean): void => {
deps.setStatsOverlayVisibleState(visible);
deps.resetVisibleOverlayInteraction();
if (visible) {
makeOverlayMousePassive(deps.getMainWindow());
deps.updateVisibleOverlayVisibility();
return;
}
deps.updateVisibleOverlayVisibility();
makeOverlayMousePassive(deps.getMainWindow());
};
}