mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-22 02:56:24 -07:00
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import type { RendererContext } from './context';
|
|
import type { RendererState } from './state';
|
|
|
|
function isBlockingOverlayModalOpen(state: RendererState): boolean {
|
|
const embeddedSidebarOpen =
|
|
state.subtitleSidebarModalOpen && state.subtitleSidebarConfig?.layout === 'embedded';
|
|
|
|
return Boolean(
|
|
state.controllerSelectModalOpen ||
|
|
state.controllerDebugModalOpen ||
|
|
state.jimakuModalOpen ||
|
|
state.kikuModalOpen ||
|
|
state.runtimeOptionsModalOpen ||
|
|
state.subsyncModalOpen ||
|
|
state.sessionHelpModalOpen ||
|
|
(state.subtitleSidebarModalOpen && !embeddedSidebarOpen),
|
|
);
|
|
}
|
|
|
|
export function syncOverlayMouseIgnoreState(ctx: RendererContext): void {
|
|
const shouldStayInteractive =
|
|
ctx.state.isOverSubtitle ||
|
|
ctx.state.isOverSubtitleSidebar ||
|
|
ctx.state.yomitanPopupVisible ||
|
|
isBlockingOverlayModalOpen(ctx.state);
|
|
|
|
if (shouldStayInteractive) {
|
|
ctx.dom.overlay.classList.add('interactive');
|
|
} else {
|
|
ctx.dom.overlay.classList.remove('interactive');
|
|
}
|
|
if (!ctx.platform?.shouldToggleMouseIgnore) {
|
|
return;
|
|
}
|
|
|
|
if (shouldStayInteractive) {
|
|
window.electronAPI.setIgnoreMouseEvents(false);
|
|
return;
|
|
}
|
|
|
|
window.electronAPI.setIgnoreMouseEvents(true, { forward: true });
|
|
}
|