게임 개발 · 기술 동향미로의 개발노트
카테고리

턴룸 · TurnRoom

Pixora와 DataTable 교차 선택 시 직전 창이 기본 창 뒤로 밀리는 문제

개발 기록 · 블로그 공개

원본 기록 상태 해결

하단 창 목록의 실제 클릭에서 재현했습니다. 선택 창만 복원하는 기존 정책을 유지하면서 직전의 앞쪽 제품 창을 보존해 양방향 전환·최소화·복원을 검증했습니다.

실제 실행 결과: 두 제품 제목줄 유지
실제 실행 결과: 두 제품 제목줄 유지

작업 결과

실제 재현·수정·실행 검증과 통합 브랜치 푸시를 완료했습니다. 종료처럼 보였던 창은 살아 있었으며 기본 창 뒤로 밀리는 상태였습니다. 수정 후 같은 클릭에서 두 제품이 기본 창 앞에 유지됩니다.

재현 조건

Windows · Unity 6000.0.83f1 · 동일 TurnRoom 프로젝트에 DataTable과 Pixora 설치

재현 순서

두 제품 창이 기본 창 앞에 있는 상태에서 하단 공통 창 목록의 다른 제품 항목을 실제 클릭했습니다. 포커스 보완을 끈 기준 모드와 켠 모드에서 같은 클릭과 네이티브 순서를 비교했습니다.

기대 동작

선택한 제품에 포커스가 가며 직전에 앞에 있던 다른 제품 창이 기본 창에 가려지지 않습니다. 최소화하거나 원래 뒤에 둔 무관한 창을 일괄 복원하지 않습니다.

실제 동작

기준 모드에서 Pixora → DataTable 클릭 후 순서가 DataTable → Unity 기본 창 → Pixora가 됐습니다. 세 문서의 객체·ID·핸들은 유지됐고 visible=true, minimized=false였습니다.

원인

하단 목록 클릭 중 기본 창이 먼저 전면으로 올라온 뒤 선택 문서만 활성화하는 경로에서, 직전의 다른 제품 창을 앞쪽에 유지하는 공통 포커스 인계 처리가 없었습니다. 이를 실제 Win32 순서와 동일 클릭 A/B 검증으로 확인했습니다. 앞선 치수·컴파일·예제 검증에는 이 실제 교차 클릭 경로가 빠져 있었습니다.

적용 내용

선택 계약 IWindowFocusHost와 공통 WindowFocus 관찰을 추가했습니다. 직접 교차 전환 직전에 실제 전면이었고 기본 창 앞에 있던 직전 제품 창만 선택 창 바로 뒤로 배치합니다. 새 창을 Focus/Show하거나 모든 문서를 끌어올리지 않습니다. 숨김·최소화·원래 뒤에 있던 창, 동일 제품 전환, 기본 창·다른 앱을 명시적으로 선택한 경우는 제외합니다. 기존 IWindowHost 계약은 유지합니다.

과거 사례와 대조했습니다.

과거 사례 당시 원인·수정 이번 수정에서 보존한 점
미리보기 클릭 복원 임시 소유권 정리가 복원 창을 다시 숨길 수 있어 커밋 전에 소유권을 분리 미리보기 소유권 코드에 새 지연 복원·전체 숨김을 넣지 않음
기본 창 클릭 후 포커스 복귀 delayCall 복원이 늦게 전경을 되가져가므로 동기 처리로 변경 새 delayCall·SetForegroundWindow를 인계 보완에 사용하지 않음
독립 복원·최소화 모든 동료 창을 올리거나 소유 창이 함께 숨는 문제 선택 문서 복원 유지, 방금 앞에 있었던 다른 제품 한 개만 순서 보존

검증

실제 하단 항목을 클릭했습니다. 기준 모드: DataTable → 기본 창 → Pixora. 수정 모드: DataTable → Pixora → 기본 창.

실제 실행 화면입니다.

개발 화면

실제 실행 결과: 두 제품 제목줄 유지

출처

중앙 아카이브 원문

같은 카테고리의 글

개발 기록 아카이브 전체 보기 ↗