# v0.1.245 — QA-036/037 프로퍼티 패널 드롭다운/입력 fix

- 버전: v0.1.245
- 분류: 48th stable seal (v0.1.366) 일괄 봉인 사이클
- 다운로드: [factory00-windows-x64-v0.1.245.zip](../../downloads/archive/factory00-windows-x64-v0.1.245.zip) (archive 보존)
- 캡처: [qa-screenshots/v0.1.245/](../../qa-screenshots/v0.1.245/)

---

## 협업자 PM 보고
QA-036: ActuatorType 드롭다운 클릭 시 즉시 닫힘 (메뉴 항목 선택 불가)
QA-037: 서보축 컴포넌트 HomePosition / MaxPosition / MaxVelocity 등 수치 입력 필드 입력 불가
PM 메모: "QA-036+QA-037+QA-041은 동일 루트 원인 추정 — 일괄 수정 권장"

## root cause 확정
RenderInspector가 0.25초 주기로 자동 호출 + _detailPane.Clear()Bootstrap line 836: const float DRAWER_REFRESH_INTERVAL = 0.25f;Bootstrap line 838 기존 주석: "Update() L2120 가 0.25s 마다 RenderInspector -> _detailPane.Clear() -> axisGroup destroy -> 새 closure"
증상 분석:
- 사용자가 TextField 클릭 + 입력 시작 -> 0.25s 후 RenderInspector -> Clear -> TextField destroy -> 새 TextField 생성 -> 사용자 입력 무효- 사용자가 DropdownField 클릭 -> popup 열림 -> 0.25s 후 Clear -> DropdownField destroy -> popup도 destroy -> "즉시 닫힘"
## fix

### 1. `IsInspectorEditFocused()` 헬퍼 신설
`csharpbool IsInspectorEditFocused() {
    if (_detailPane == null || uiDocument == null) return false;
    var focused = uiDocument.rootVisualElement?.focusController?.focusedElement as VisualElement;
    if (focused == null) return false;
    // _detailPane의 자손인지 ancestor 추적
    var cur = focused;
    while (cur != null) {
        if (cur == _detailPane) return true;
        cur = cur.parent;
    }
    return false;
}
`기존 IsAnyTextFieldFocused는 root.focusedElement가 TextField인지만 체크. DropdownField / Toggle / Slider / NavigatedListView 등 미포함 + detail-pane 외부 TextField도 미구분 -> 본 헬퍼는 _detailPane 자손 한정.

### 2. 주기 RenderInspector 가드 (line 3595)
`csharp// 이전: !_inspectorDragLock 만
if (_selectedPart != null && _detailPane != null && !_inspectorDragLock)
// 신규: !IsInspectorEditFocused() 추가
if (_selectedPart != null && _detailPane != null && !_inspectorDragLock && !IsInspectorEditFocused())
`
## 영향 범위
- TextField (HomePosition / MaxVelocity / 모든 수치 입력) [OK]- DropdownField (ActuatorType / 좌표계 / 메이커 프리셋 / 해상도 등) [OK]- Toggle (Lit / 로컬 회전 등) [OK] — focus 보유 시 외부 click 전까지 유지- Slider — 일반적으로 focus 유지 X (drag 후 자동 해제), 안전망
## 부가 효과
- QA-041 설정창 수치 필드 — settings-panel은 _detailPane 외부 -> 별도 fix 필요. 다음 사이클.- 0.25s 주기 RenderInspector가 외부 click 또는 ESC로 포커스 해제 시 다음 tick에 즉시 재개 -> 사용자 입력 종료 후 inspector 갱신 자동.
## 검증 시나리오 (PM checklist QA-011)
1. 부품 선택 -> 서보축 부착 -> 프로퍼티 패널의 HomePosition TextField 클릭 -> 값 입력 -> 정상 (이전: 입력 불가)
2. 부품 선택 -> 서보축 부착 -> ActuatorType 드롭다운 클릭 -> popup 메뉴 유지 -> 항목 선택 가능 (이전: 즉시 닫힘)
3. 외부 click 또는 ESC -> 다음 0.25s tick에 RenderInspector 자동 재개 -> 갱신 값 반영

## 변경 파일
- Assets/Scripts/Game/Factory00Bootstrap.cs (+25라인)- IsInspectorEditFocused() 신설 (line 414 부근, IsAnyTextFieldFocused 옆)- 주기 RenderInspector 가드 (line 3595)
## 다음 사이클
- v0.1.246 — QA-041 설정창 수치 필드 + QA-047 Delete Undo 일괄- v0.1.247 — QA-014 Persp/Ortho v0.1.240 퇴행- v0.1.248 — QA-007/052 splitter/스크롤바 누수- v0.1.249+ — QA-006 씬 클릭 간헐 + QA-033/035 Simulation


---

## 봉인 참조

본 사이클은 **48th stable seal (v0.1.366, 2026-05-24)** 일괄 봉인에 포함됨.

- journal: [2026-05-24-v0.1.298-366-48th-stable-seal.md](../../journal/2026-05-24-v0.1.298-366-48th-stable-seal.md)
- alias zip: [factory00-windows-x64-v0.1.366-stable.zip](../../downloads/factory00-windows-x64-v0.1.366-stable.zip) (170 MB)
