diff --git a/B05_Profile/B05_Profile_UI_Structures_Panel.ts b/B05_Profile/B05_Profile_UI_Structures_Panel.ts index 175d049b..a147dc0c 100644 --- a/B05_Profile/B05_Profile_UI_Structures_Panel.ts +++ b/B05_Profile/B05_Profile_UI_Structures_Panel.ts @@ -666,9 +666,16 @@ export function createStructuresSection(callbacks: StructuresCallbacks): Structu input.addEventListener("change", handleStationInput), ), ); - // A군 임시 배치는 측점 입력군에서 포커스가 완전히 빠져나간 뒤에만 — 측점번호를 - // 넣고 잔여거리 칸으로 옮기는 중간에는 나가지 않는다(2026-08-18 사용자 지시: - // 측점+거리를 다 받은 후 임시 배치). Enter로도 바로 나갈 수 있다. + // 측점번호+잔여거리가 **둘 다 확정된 순간** 임시 배치·옵션 활성화가 바로 나간다 + // (2026-08-18 사용자 지시 — 입력군을 떠나기 전이라도). 잔여거리 값이 확정되면 + // 즉시, 측점번호 수정은 잔여거리가 이미 있을 때만 즉시. + anchorFields.remainder.addEventListener("change", () => commitPosition()); + anchorFields.station.addEventListener("change", () => { + if (anchorFields.remainder.value.trim() !== "") commitPosition(); + }); + // 그 외(잔여거리를 안 쓰는 정측점 입력 등)는 입력군에서 포커스가 완전히 빠져나간 + // 뒤에 확정한다 — 측점번호만 넣고 잔여거리 칸으로 옮기는 중간에는 나가지 않는다. + // Enter로도 바로 나갈 수 있다. positionRow.addEventListener("focusout", () => { // 다음 포커스 대상이 확정된 다음 프레임에 판단한다(relatedTarget은 브라우저에 // 따라 비어 온다).