Fix startup TDZ and suppress subtitles during settings modals

This commit is contained in:
2026-02-10 01:58:44 -08:00
parent 2d3bb19458
commit f2e9c37f61
3 changed files with 137 additions and 145 deletions

View File

@@ -405,6 +405,18 @@ let mpvSubtitleRenderMetrics: MpvSubtitleRenderMetrics = {
};
let currentSubtitleAss = "";
function isAnySettingsModalOpen(): boolean {
return runtimeOptionsModalOpen || subsyncModalOpen || kikuModalOpen;
}
function syncSettingsModalSubtitleSuppression(): void {
const suppressSubtitles = isAnySettingsModalOpen();
document.body.classList.toggle("settings-modal-open", suppressSubtitles);
if (suppressSubtitles) {
isOverSubtitle = false;
}
}
function normalizeSubtitle(text: string, trim = true): string {
if (!text) return "";
@@ -1140,6 +1152,7 @@ function updateRuntimeOptions(options: RuntimeOptionState[]): void {
function closeRuntimeOptionsModal(): void {
if (!runtimeOptionsModalOpen) return;
runtimeOptionsModalOpen = false;
syncSettingsModalSubtitleSuppression();
runtimeOptionsModal.classList.add("hidden");
runtimeOptionsModal.setAttribute("aria-hidden", "true");
window.electronAPI.notifyOverlayModalClosed("runtime-options");
@@ -1159,6 +1172,7 @@ async function openRuntimeOptionsModal(): Promise<void> {
const options = await window.electronAPI.getRuntimeOptions();
updateRuntimeOptions(options);
runtimeOptionsModalOpen = true;
syncSettingsModalSubtitleSuppression();
overlay.classList.add("interactive");
runtimeOptionsModal.classList.remove("hidden");
runtimeOptionsModal.setAttribute("aria-hidden", "false");
@@ -1296,6 +1310,7 @@ function renderSubsyncSourceTracks(): void {
function closeSubsyncModal(): void {
if (!subsyncModalOpen) return;
subsyncModalOpen = false;
syncSettingsModalSubtitleSuppression();
subsyncModal.classList.add("hidden");
subsyncModal.setAttribute("aria-hidden", "true");
window.electronAPI.notifyOverlayModalClosed("subsync");
@@ -1326,6 +1341,7 @@ function openSubsyncModal(payload: SubsyncManualPayload): void {
false,
);
subsyncModalOpen = true;
syncSettingsModalSubtitleSuppression();
overlay.classList.add("interactive");
subsyncModal.classList.remove("hidden");
subsyncModal.setAttribute("aria-hidden", "false");
@@ -1454,6 +1470,7 @@ function openKikuFieldGroupingModal(data: {
updateKikuCardSelection();
syncSettingsModalSubtitleSuppression();
overlay.classList.add("interactive");
kikuModal.classList.remove("hidden");
kikuModal.setAttribute("aria-hidden", "false");
@@ -1462,6 +1479,7 @@ function openKikuFieldGroupingModal(data: {
function closeKikuFieldGroupingModal(): void {
if (!kikuModalOpen) return;
kikuModalOpen = false;
syncSettingsModalSubtitleSuppression();
kikuModal.classList.add("hidden");
kikuModal.setAttribute("aria-hidden", "true");
setKikuPreviewError(null);
@@ -2395,6 +2413,7 @@ async function init(): Promise<void> {
openRuntimeOptionsModal().catch(() => {
setRuntimeOptionsStatus("Failed to load runtime options", true);
window.electronAPI.notifyOverlayModalClosed("runtime-options");
syncSettingsModalSubtitleSuppression();
});
});
window.electronAPI.onOpenJimaku(() => {

View File

@@ -259,6 +259,11 @@ body {
display: none;
}
body.settings-modal-open #subtitleContainer {
display: none !important;
pointer-events: none !important;
}
#subtitleRoot .c {
display: inline;
position: relative;
@@ -378,6 +383,11 @@ body.layer-invisible.debug-invisible-visualization #subtitleRoot .c {
display: none;
}
body.settings-modal-open #secondarySubContainer {
display: none !important;
pointer-events: none !important;
}
.secondary-sub-hidden {
display: none !important;
}