diff --git a/doc/진행상황.md b/doc/진행상황.md index 2b94723..b9e41bb 100644 --- a/doc/진행상황.md +++ b/doc/진행상황.md @@ -101,9 +101,9 @@ CommunityToolkit 커맨드는 CommandManager 를 구독하지 않는데 이 둘 | 상태 | 항목 | 내용 | 확인 | |---|---|---|---| | **완료** | A-1 폴더 고르기에서 프로그램이 죽음 | 아래 따로 적음 | 왼쪽·오른쪽 10회 연속 · 파일 비교 쪽 2회 | -| 대기 | A-2 화면 이동 시 종료·최소화 | | | -| 대기 | A-3 파일 비교에서 화면 이동이 원래 모니터로 복귀 | | | -| 대기 | A-4 화면 이동 시 잠금 팝업 | | | +| **완료** | A-2 화면 이동 시 종료·최소화 | 아래 A-2~A-4 에 함께 적음 | 21회 연속 이동 (누름 60·250·600ms) | +| **완료** | A-3 파일 비교에서 화면 이동이 원래 모니터로 복귀 | A-2 와 같은 원인 | 파일 비교 탭에서 6회 왕복 | +| **완료** | A-4 화면 이동 시 잠금 팝업 | A-2 와 같은 원인 | 팝업 0회 · 잠금/바탕화면/종료 버튼은 그대로 동작 | | 대기 | A-5 Git 저장소 최상위를 고를 수 없음 | | | ### B. 3-Way 화면 @@ -136,6 +136,48 @@ CommunityToolkit 커맨드는 CommandManager 를 구독하지 않는데 이 둘 --- +### A-2 · A-3 · A-4. 화면 이동 결함 세 가지 — **완료** (2026-09-09) + +세 가지가 아니라 하나였다. + +증상은 셋으로 보였다. 화면 이동을 눌렀는데 창이 최소화되거나, 잠금 창이 뜨거나, +파일 비교 화면에서는 옮겨졌다가 원래 모니터로 되돌아왔다. 셋 다 같은 자리에서 나온다. + +스택을 찍어 보니 이렇게 흘렀다. + +``` +ListBox.OnMouseMove + → ItemsControl.DoAutoScroll + → ListBox.FocusItem + → ListBox.MakeSingleSelection ← 여기서 옆 항목이 선택된다 + → NavList_SelectionChanged ← 그 항목의 동작이 실행된다 +``` + +**하단 탭 바는 ListBox 다.** ListBox 는 누르는 순간 항목을 고르고 마우스를 잡는다 +(끌어서 여러 개 고르기 위해서다). 손을 떼기 전에 창이 다른 모니터로 넘어가면 커서는 +목록 밖에 남게 되고, ListBox 는 그것을 "끌어서 화면 밖으로 나갔다"고 보고 옆 항목을 +대신 고른다. 하단 탭 바의 오른쪽 끝은 `화면 잠금 · 화면 이동 · 바탕화면 · 종료` 순으로 +붙어 있어서, 옆 항목이 무엇이냐에 따라 잠금 창이 뜨거나(A-4) 최소화되거나(A-2) +방금 옮긴 창이 도로 넘어온다(A-3). 어느 쪽으로 튈지 그때그때 달랐던 이유가 이것이다. + +전에 한 번 손을 댄 자리였는데, 그때는 실행을 `DispatcherPriority.Background` 로 미루는 +방식이었다. **그것으로는 막히지 않는다** — 사람이 버튼을 누르고 있는 시간(보통 100ms 이상)이 +그 지연보다 길기 때문이다. 누르고 있는 동안 창이 움직이면 똑같이 재현된다. + +**고친 것**: 동작형 항목(화면 이동·바탕화면·화면 잠금·종료)은 탭이 아니라 버튼이다. +마우스로 누를 때는 ListBox 의 선택 경로를 아예 타지 않게 `PreviewMouseLeftButtonDown` 에서 +끊고, 실행은 손을 뗄 때 한다. 창이 움직이는 순간에 눌린 버튼이 없으니 끌어서 스크롤이 +일어날 여지가 없다. 누른 뒤 밖으로 끌고 나가 떼면 실행되지 않는 것도 버튼과 같은 규칙이다. +키보드로 항목을 옮겨 고르는 경로는 그대로 두었다. + +**확인**: 두 모니터(2560×1600@150% ↔ 1920×1080@100%) 사이를 21회 연속 왕복. +버튼을 누르고 있는 시간을 60ms · 250ms · 600ms 로 나눠 각각 7회씩 했고 실패 0건. +파일 비교 화면에서도 6회 왕복 확인. 바탕화면·화면 잠금·종료 세 버튼도 그대로 동작한다. + +**플랫폼 변경이라 모든 소비 프로그램에 적용된다.** + +--- + ### A-1. 폴더 고르기에서 프로그램이 죽던 원인 — **완료** (2026-09-09) "왼쪽 폴더..." 를 누르면 창이 하얗게 굳었다가 그대로 사라졌다. 윈도우 이벤트 로그에 남은 것: