From bad30f50e4cb6d0fc3ece89254501ed438eb3c11 Mon Sep 17 00:00:00 2001 From: ksj09406 Date: Thu, 10 Sep 2026 22:39:26 +0900 Subject: [PATCH] =?UTF-8?q?4=EC=B0=A8=20C-5:=20ACTIONS=20=EC=B9=B8?= =?UTF-8?q?=EC=9D=84=20=EC=9E=90=EC=A3=BC=20=EC=93=B0=EB=8A=94=20=EA=B2=83?= =?UTF-8?q?=EA=B3=BC=20=ED=95=9C=20=EB=B2=88=20=EC=A0=95=ED=95=98=EB=8A=94?= =?UTF-8?q?=20=EA=B2=83=EC=9C=BC=EB=A1=9C=20=EB=82=98=EB=88=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 저장 형식·비교 규칙·편집 잠금을 한자리에 모아 접었다. 차이 이동을 개수 옆으로 옮겼다. 지시서의 "폭이 넓어진다"는 틀렸다. 폭을 정하는 단추들이 접어도 남는 쪽이다. --- doc/history/2026-09-10-4차.md | 42 +++++++++++++++ doc/history/changelog.md | 2 + doc/진행상황.md | 2 +- src/MergeHub/MergeHubSettings.cs | 7 +++ src/MergeHub/ViewModels/HomeViewModel.cs | 31 +++++++++++ src/MergeHub/Views/HomeView.xaml | 66 +++++++++++++++++++----- 6 files changed, 137 insertions(+), 13 deletions(-) diff --git a/doc/history/2026-09-10-4차.md b/doc/history/2026-09-10-4차.md index 2fa24dd..7e41730 100644 --- a/doc/history/2026-09-10-4차.md +++ b/doc/history/2026-09-10-4차.md @@ -517,3 +517,45 @@ C-3 에서 똑같은 실수를 했다. 접거나 누를 수 있게 만들 때는 **줄 머리에서 한 번만 말한다** - `색 구분 (눌러서 이동)`. 항목마다 칠하지 않으므로 줄은 그대로 조용하고, 무엇인지는 한 번 읽으면 안다. + +--- + +## C-5. ACTIONS 칸을 자주 쓰는 것과 한 번 정하는 것으로 — **완료** (2026-09-10) + +**무엇이 문제였나** - 오른쪽 칸에 두 가지 성격이 섞여 있었다. + +| 매번 쓰는 것 | 한 번 정하면 그대로인 것 | +|---|---| +| Undo/Redo · 전체 반영 · Accept · 이 덩어리 반영 · Revert · 차이 이동 · 저장 | 저장 형식 두 칸 · 비교 규칙 넷 · 편집 잠금 | + +뒤엣것이 앞엣것 사이사이에 흩어져 있었다(`저장 형식` 은 가운데, `비교 규칙` 은 맨 아래). + +**한자리에 모으고 접었다.** `▸ 저장 형식 · 비교 규칙 펴기` 하나로 셋을 함께 여닫는다. +자리는 차이 이동 아래, 저장 위다. **단추 글자가 무엇이 숨어 있는지 말한다** - +화살표만으로는 전해지지 않는다는 것을 C-3 · C-4 에서 두 번 겪었다. +펼침 상태는 `ActionsRulesExpanded` 에 남기고 설정 화면에는 안 내놓는다. + +**차이 이동을 개수 옆으로 옮겼다.** 가장 자주 누르는 것인데 오른쪽 칸 끝에 있었고, +정작 "몇 번째인지"는 아래 상태바에 있었다. **보는 자리와 누르는 자리가 갈려 있으면 눈과 손이 따로 움직인다.** +상태바에 `◀ 차이 3 / 5 ▶` 로 붙였다. 오른쪽 칸의 큰 단추는 그대로 둔다 - 쓰던 사람 손을 빼앗지 않는다. + +### 지시서가 틀렸던 것 — 접어도 폭은 안 줄어든다 + +지시서에 "오른쪽 칸 폭을 그만큼 코드에 돌려준다" 고 적었는데 **틀린 말이었다.** +폭을 정하는 것은 두 칸짜리 단추(Undo/Redo · 이전 차이/다음 차이)와 Accept 인데, +그것들은 전부 **접어도 남는 쪽**이다. 접히는 것은 세로만 먹는다. + +실제로 214 → 176 으로 좁혀 봤더니 `Undo` 가 `Undc` 로, `이전 차이` 가 `이전 차` 로 잘렸다. +되돌리고 폭은 그대로 두었다. **C-5 가 얻는 것은 폭이 아니라 세로 자리와 덜 어지러운 칸이다.** + +**화면에서 확인한 것** + +| 확인 | 결과 | +|---|---| +| 접었을 때 | 저장 형식 · 비교 규칙 · 편집 잠금이 사라진다 | +| 남은 단추 글자 | `Undo` `Redo` `이전 차이` `다음 차이` 모두 안 잘린다 | +| 펼치면 | 차이 이동 아래에 셋이 한 덩어리로 나온다 | +| 상태바 | `1행 1열 │ ◀ 차이 -/3 ▶ │ 총 13줄 · 남은 차이 3줄` | +| 규칙을 바꾼 뒤 | 반영한 줄이 `머지 반영함` 그대로, `직접 수정` 0 (3차 E-5 회귀 없음) | + +검사 571건 통과 · 빌드 경고 0 · 오류 0. \ No newline at end of file diff --git a/doc/history/changelog.md b/doc/history/changelog.md index a5a4d0d..d1c9b16 100644 --- a/doc/history/changelog.md +++ b/doc/history/changelog.md @@ -8,6 +8,7 @@ | 날짜 | 항목 | 커밋 | |---|---|---| +| 2026-09-10 | **4차 C-5** — 한 번 정하는 것들을 한자리에 모아 접고, 차이 이동을 개수 옆으로 | 아래 | | 2026-09-10 | **4차 C-4** — 범례를 눌러 그 갈래로 이동. 0건은 흐리게 | 아래 | | 2026-09-10 | **4차 C-3** — Git 탭의 원격 칸을 접을 수 있게. 로컬 경로 한 줄만 남고 세로 128px 가 목록으로 간다 | 아래 | | 2026-09-10 | **엔터 고침의 되돌이 문제** — TextChanged 안에서 편집기 글을 갈아 끼워 캐럿이 엉켰다. 한 차례 뒤로 물림 | 아래 | @@ -38,6 +39,7 @@ | 날짜 | 문서 | 내용 | |---|---|---| +| 2026-09-10 | **4차 C-5** — 한 번 정하는 것들을 한자리에 모아 접고, 차이 이동을 개수 옆으로 | 아래 | | 2026-09-10 | **4차 C-4** — 범례를 눌러 그 갈래로 이동. 0건은 흐리게 | 아래 | | 2026-09-10 | **4차 C-3** — Git 탭의 원격 칸을 접을 수 있게. 로컬 경로 한 줄만 남고 세로 128px 가 목록으로 간다 | 아래 | | 2026-09-10 | **엔터 고침의 되돌이 문제** — TextChanged 안에서 편집기 글을 갈아 끼워 캐럿이 엉켰다. 한 차례 뒤로 물림 | 아래 | diff --git a/doc/진행상황.md b/doc/진행상황.md index 1635cf4..89cddd3 100644 --- a/doc/진행상황.md +++ b/doc/진행상황.md @@ -42,7 +42,7 @@ | **완료** | C-2 아래쪽 정보가 세 군데로 흩어져 있다 | | **완료** | C-3 Git 탭의 원격 블록을 접는다 | | **완료** | C-4 색 구분 범례를 이동 도구로 | -| 대기 | C-5 ACTIONS 칸을 자주 쓰는 것과 한 번 정하는 것으로 나눈다 | +| **완료** | C-5 ACTIONS 칸을 자주 쓰는 것과 한 번 정하는 것으로 나눈다 | ### D. 변경 이력을 전용 폴더로 diff --git a/src/MergeHub/MergeHubSettings.cs b/src/MergeHub/MergeHubSettings.cs index b91674a..4f790d7 100644 --- a/src/MergeHub/MergeHubSettings.cs +++ b/src/MergeHub/MergeHubSettings.cs @@ -97,5 +97,12 @@ namespace MergeHub [Browsable(false)] public bool GitRemoteExpanded { get; set; } + /// + /// 파일 비교 오른쪽 칸에서 한 번 정하면 그대로인 것들(저장 형식 · 비교 규칙 · 편집 잠금)을 + /// 펼쳐 두었는지. 설정 화면에는 안 내놓는다 — 화면에서 접고 펴는 값이다. + /// + [Browsable(false)] + public bool ActionsRulesExpanded { get; set; } + } } diff --git a/src/MergeHub/ViewModels/HomeViewModel.cs b/src/MergeHub/ViewModels/HomeViewModel.cs index 9ca0812..6415648 100644 --- a/src/MergeHub/ViewModels/HomeViewModel.cs +++ b/src/MergeHub/ViewModels/HomeViewModel.cs @@ -38,6 +38,7 @@ namespace MergeHub.ViewModels _workspace.PlainCompareRequested += OnPlainCompareRequested; _workspace.Recent.Changed += (_, _) => _workspace.OnUi(RefreshRecent); _workspace.QueueChanged += (_, _) => RefreshQueue(); + _isRulesOpen = _workspace.Settings.ActionsRulesExpanded; _reflowTimer.Tick += (_, _) => Reflow(); RefreshRecent(); @@ -190,6 +191,36 @@ namespace MergeHub.ViewModels /// 비교 대상 파일 목록(충돌 중이면 충돌 파일, 아니면 선택 커밋의 파일). public ObservableCollection Files { get; } = new ObservableCollection(); + // ================= 오른쪽 칸 접고 펴기 ================= + + /// + /// 저장 형식 · 비교 규칙 · 편집 잠금을 펼쳐 두었는지. + /// + /// 왜 접나 - 오른쪽 칸에는 매번 쓰는 것(반영 · 되돌리기 · 차이 이동 · 저장)과 + /// 한 번 정하면 그대로인 것(저장 형식 · 비교 규칙 · 편집 잠금)이 섞여 있었다. + /// 뒤엣것을 접으면 그만큼 코드 폭이 넓어진다. 코드를 나란히 읽는 도구에서 가로 한 칸은 + /// 그대로 읽을 수 있는 글자 수다. + /// + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(RulesToggleLabel))] + private bool _isRulesOpen; + + /// + /// 단추 글자. 무엇이 숨어 있고 누르면 무슨 일이 나는지 함께 적는다 - + /// 화살표만으로는 "여기 접힌 것이 있다"가 전해지지 않는다(C-3 · C-4 에서 두 번 겪었다). + /// + public string RulesToggleLabel => + IsRulesOpen ? "▾ 저장 형식 · 비교 규칙 접기" : "▸ 저장 형식 · 비교 규칙 펴기"; + + [RelayCommand] + private void ToggleRules() + { + IsRulesOpen = !IsRulesOpen; + + _workspace.Settings.ActionsRulesExpanded = IsRulesOpen; + _workspace.SaveSettings(); + } + // ================= 폴더에서 훑는 중인 파일 이동 ================= /// 훑을 목록이 있는지. 폴더를 거치지 않고 연 파일에는 없다. diff --git a/src/MergeHub/Views/HomeView.xaml b/src/MergeHub/Views/HomeView.xaml index fb1200d..6bdea98 100644 --- a/src/MergeHub/Views/HomeView.xaml +++ b/src/MergeHub/Views/HomeView.xaml @@ -821,6 +821,14 @@ + + @@ -1450,15 +1458,13 @@ 저장 형식. 기본은 "원본 유지"라 지금까지와 똑같이 나간다. 사내 소스에 CP949 가 섞여 있어, 새로 만드는 파일과 형식이 갈릴 때 여기서 맞춘다. --> - - - - - + + + +