diff --git a/B06_Section/B06_Section_UI_Cross_Panel_Base.ts b/B06_Section/B06_Section_UI_Cross_Panel_Base.ts index 017e2716..0d1fe1b6 100644 --- a/B06_Section/B06_Section_UI_Cross_Panel_Base.ts +++ b/B06_Section/B06_Section_UI_Cross_Panel_Base.ts @@ -92,7 +92,8 @@ export function bindArrowKeys( return; } const slot = ARROW_SLOT[event.key]; - if (!slot || root.classList.contains("is-hidden")) return; + // 보기가 숨었으면(한 페이지 두 보기 · 계획서 24-3a) 다른 보기의 방향키를 먹지 않는다. + if (!slot || root.classList.contains("is-hidden") || !root.getClientRects().length) return; const focus = event.target as HTMLElement | null; if (focus && (focus.tagName === "SELECT" || focus.tagName === "INPUT")) return; for (const container of containers()) { diff --git a/B06_Section/B06_Section_UI_Cross_Structure_Panel.ts b/B06_Section/B06_Section_UI_Cross_Structure_Panel.ts index b360e64d..e24f37fa 100644 --- a/B06_Section/B06_Section_UI_Cross_Structure_Panel.ts +++ b/B06_Section/B06_Section_UI_Cross_Structure_Panel.ts @@ -457,7 +457,8 @@ export function buildStructurePanel( return; } const slot = ARROW_SLOT[event.key]; - if (!slot || root.classList.contains("is-hidden")) return; + // 보기가 숨었으면(한 페이지 두 보기 · 계획서 24-3a) 다른 보기의 방향키를 먹지 않는다. + if (!slot || root.classList.contains("is-hidden") || !root.getClientRects().length) return; const focus = event.target as HTMLElement | null; if (focus && (focus.tagName === "SELECT" || focus.tagName === "INPUT")) return; for (const candidate of [basinRow, moveRow]) {