mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-02 18:22:42 -08:00
102 lines
3.2 KiB
TypeScript
102 lines
3.2 KiB
TypeScript
import type { BrowserWindow } from 'electron';
|
|
import { BaseWindowTracker } from '../../window-trackers';
|
|
import { WindowGeometry } from '../../types';
|
|
|
|
export function updateVisibleOverlayVisibility(args: {
|
|
visibleOverlayVisible: boolean;
|
|
mainWindow: BrowserWindow | null;
|
|
windowTracker: BaseWindowTracker | null;
|
|
trackerNotReadyWarningShown: boolean;
|
|
setTrackerNotReadyWarningShown: (shown: boolean) => void;
|
|
updateVisibleOverlayBounds: (geometry: WindowGeometry) => void;
|
|
ensureOverlayWindowLevel: (window: BrowserWindow) => void;
|
|
syncPrimaryOverlayWindowLayer: (layer: 'visible') => void;
|
|
enforceOverlayLayerOrder: () => void;
|
|
syncOverlayShortcuts: () => void;
|
|
isMacOSPlatform?: boolean;
|
|
showOverlayLoadingOsd?: (message: string) => void;
|
|
resolveFallbackBounds?: () => WindowGeometry;
|
|
}): void {
|
|
if (!args.mainWindow || args.mainWindow.isDestroyed()) {
|
|
return;
|
|
}
|
|
|
|
if (!args.visibleOverlayVisible) {
|
|
args.setTrackerNotReadyWarningShown(false);
|
|
args.mainWindow.hide();
|
|
args.syncOverlayShortcuts();
|
|
return;
|
|
}
|
|
|
|
if (args.windowTracker && args.windowTracker.isTracking()) {
|
|
args.setTrackerNotReadyWarningShown(false);
|
|
const geometry = args.windowTracker.getGeometry();
|
|
if (geometry) {
|
|
args.updateVisibleOverlayBounds(geometry);
|
|
}
|
|
args.syncPrimaryOverlayWindowLayer('visible');
|
|
args.mainWindow.setIgnoreMouseEvents(false);
|
|
args.ensureOverlayWindowLevel(args.mainWindow);
|
|
args.mainWindow.show();
|
|
args.mainWindow.focus();
|
|
args.enforceOverlayLayerOrder();
|
|
args.syncOverlayShortcuts();
|
|
return;
|
|
}
|
|
|
|
if (!args.windowTracker) {
|
|
if (args.isMacOSPlatform) {
|
|
if (!args.trackerNotReadyWarningShown) {
|
|
args.setTrackerNotReadyWarningShown(true);
|
|
args.showOverlayLoadingOsd?.('Overlay loading...');
|
|
}
|
|
args.mainWindow.hide();
|
|
args.syncOverlayShortcuts();
|
|
return;
|
|
}
|
|
args.setTrackerNotReadyWarningShown(false);
|
|
args.syncPrimaryOverlayWindowLayer('visible');
|
|
args.mainWindow.setIgnoreMouseEvents(false);
|
|
args.ensureOverlayWindowLevel(args.mainWindow);
|
|
args.mainWindow.show();
|
|
args.mainWindow.focus();
|
|
args.enforceOverlayLayerOrder();
|
|
args.syncOverlayShortcuts();
|
|
return;
|
|
}
|
|
|
|
if (!args.trackerNotReadyWarningShown) {
|
|
args.setTrackerNotReadyWarningShown(true);
|
|
if (args.isMacOSPlatform) {
|
|
args.showOverlayLoadingOsd?.('Overlay loading...');
|
|
}
|
|
}
|
|
|
|
if (args.isMacOSPlatform) {
|
|
args.mainWindow.hide();
|
|
args.syncOverlayShortcuts();
|
|
return;
|
|
}
|
|
|
|
const fallbackBounds = args.resolveFallbackBounds?.();
|
|
if (!fallbackBounds) return;
|
|
|
|
args.updateVisibleOverlayBounds(fallbackBounds);
|
|
args.syncPrimaryOverlayWindowLayer('visible');
|
|
args.mainWindow.setIgnoreMouseEvents(false);
|
|
args.ensureOverlayWindowLevel(args.mainWindow);
|
|
args.mainWindow.show();
|
|
args.mainWindow.focus();
|
|
args.enforceOverlayLayerOrder();
|
|
args.syncOverlayShortcuts();
|
|
}
|
|
|
|
export function setVisibleOverlayVisible(options: {
|
|
visible: boolean;
|
|
setVisibleOverlayVisibleState: (visible: boolean) => void;
|
|
updateVisibleOverlayVisibility: () => void;
|
|
}): void {
|
|
options.setVisibleOverlayVisibleState(options.visible);
|
|
options.updateVisibleOverlayVisibility();
|
|
}
|