4차 C-5: ACTIONS 칸을 자주 쓰는 것과 한 번 정하는 것으로 나눔
저장 형식·비교 규칙·편집 잠금을 한자리에 모아 접었다. 차이 이동을 개수 옆으로 옮겼다. 지시서의 "폭이 넓어진다"는 틀렸다. 폭을 정하는 단추들이 접어도 남는 쪽이다.
This commit is contained in:
parent
27a8bfb275
commit
bad30f50e4
@ -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.
|
||||||
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
| 날짜 | 항목 | 커밋 |
|
| 날짜 | 항목 | 커밋 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| 2026-09-10 | **4차 C-5** — 한 번 정하는 것들을 한자리에 모아 접고, 차이 이동을 개수 옆으로 | 아래 |
|
||||||
| 2026-09-10 | **4차 C-4** — 범례를 눌러 그 갈래로 이동. 0건은 흐리게 | 아래 |
|
| 2026-09-10 | **4차 C-4** — 범례를 눌러 그 갈래로 이동. 0건은 흐리게 | 아래 |
|
||||||
| 2026-09-10 | **4차 C-3** — Git 탭의 원격 칸을 접을 수 있게. 로컬 경로 한 줄만 남고 세로 128px 가 목록으로 간다 | 아래 |
|
| 2026-09-10 | **4차 C-3** — Git 탭의 원격 칸을 접을 수 있게. 로컬 경로 한 줄만 남고 세로 128px 가 목록으로 간다 | 아래 |
|
||||||
| 2026-09-10 | **엔터 고침의 되돌이 문제** — TextChanged 안에서 편집기 글을 갈아 끼워 캐럿이 엉켰다. 한 차례 뒤로 물림 | 아래 |
|
| 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-4** — 범례를 눌러 그 갈래로 이동. 0건은 흐리게 | 아래 |
|
||||||
| 2026-09-10 | **4차 C-3** — Git 탭의 원격 칸을 접을 수 있게. 로컬 경로 한 줄만 남고 세로 128px 가 목록으로 간다 | 아래 |
|
| 2026-09-10 | **4차 C-3** — Git 탭의 원격 칸을 접을 수 있게. 로컬 경로 한 줄만 남고 세로 128px 가 목록으로 간다 | 아래 |
|
||||||
| 2026-09-10 | **엔터 고침의 되돌이 문제** — TextChanged 안에서 편집기 글을 갈아 끼워 캐럿이 엉켰다. 한 차례 뒤로 물림 | 아래 |
|
| 2026-09-10 | **엔터 고침의 되돌이 문제** — TextChanged 안에서 편집기 글을 갈아 끼워 캐럿이 엉켰다. 한 차례 뒤로 물림 | 아래 |
|
||||||
|
|||||||
@ -42,7 +42,7 @@
|
|||||||
| **완료** | C-2 아래쪽 정보가 세 군데로 흩어져 있다 |
|
| **완료** | C-2 아래쪽 정보가 세 군데로 흩어져 있다 |
|
||||||
| **완료** | C-3 Git 탭의 원격 블록을 접는다 |
|
| **완료** | C-3 Git 탭의 원격 블록을 접는다 |
|
||||||
| **완료** | C-4 색 구분 범례를 이동 도구로 |
|
| **완료** | C-4 색 구분 범례를 이동 도구로 |
|
||||||
| 대기 | C-5 ACTIONS 칸을 자주 쓰는 것과 한 번 정하는 것으로 나눈다 |
|
| **완료** | C-5 ACTIONS 칸을 자주 쓰는 것과 한 번 정하는 것으로 나눈다 |
|
||||||
|
|
||||||
### D. 변경 이력을 전용 폴더로
|
### D. 변경 이력을 전용 폴더로
|
||||||
|
|
||||||
|
|||||||
@ -97,5 +97,12 @@ namespace MergeHub
|
|||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public bool GitRemoteExpanded { get; set; }
|
public bool GitRemoteExpanded { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 파일 비교 오른쪽 칸에서 <b>한 번 정하면 그대로인 것들</b>(저장 형식 · 비교 규칙 · 편집 잠금)을
|
||||||
|
/// 펼쳐 두었는지. 설정 화면에는 안 내놓는다 — 화면에서 접고 펴는 값이다.
|
||||||
|
/// </summary>
|
||||||
|
[Browsable(false)]
|
||||||
|
public bool ActionsRulesExpanded { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,6 +38,7 @@ namespace MergeHub.ViewModels
|
|||||||
_workspace.PlainCompareRequested += OnPlainCompareRequested;
|
_workspace.PlainCompareRequested += OnPlainCompareRequested;
|
||||||
_workspace.Recent.Changed += (_, _) => _workspace.OnUi(RefreshRecent);
|
_workspace.Recent.Changed += (_, _) => _workspace.OnUi(RefreshRecent);
|
||||||
_workspace.QueueChanged += (_, _) => RefreshQueue();
|
_workspace.QueueChanged += (_, _) => RefreshQueue();
|
||||||
|
_isRulesOpen = _workspace.Settings.ActionsRulesExpanded;
|
||||||
_reflowTimer.Tick += (_, _) => Reflow();
|
_reflowTimer.Tick += (_, _) => Reflow();
|
||||||
|
|
||||||
RefreshRecent();
|
RefreshRecent();
|
||||||
@ -190,6 +191,36 @@ namespace MergeHub.ViewModels
|
|||||||
/// <summary>비교 대상 파일 목록(충돌 중이면 충돌 파일, 아니면 선택 커밋의 파일).</summary>
|
/// <summary>비교 대상 파일 목록(충돌 중이면 충돌 파일, 아니면 선택 커밋의 파일).</summary>
|
||||||
public ObservableCollection<string> Files { get; } = new ObservableCollection<string>();
|
public ObservableCollection<string> Files { get; } = new ObservableCollection<string>();
|
||||||
|
|
||||||
|
// ================= 오른쪽 칸 접고 펴기 =================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 저장 형식 · 비교 규칙 · 편집 잠금을 펼쳐 두었는지.
|
||||||
|
///
|
||||||
|
/// <b>왜 접나</b> - 오른쪽 칸에는 <b>매번 쓰는 것</b>(반영 · 되돌리기 · 차이 이동 · 저장)과
|
||||||
|
/// <b>한 번 정하면 그대로인 것</b>(저장 형식 · 비교 규칙 · 편집 잠금)이 섞여 있었다.
|
||||||
|
/// 뒤엣것을 접으면 그만큼 코드 폭이 넓어진다. 코드를 나란히 읽는 도구에서 가로 한 칸은
|
||||||
|
/// 그대로 읽을 수 있는 글자 수다.
|
||||||
|
/// </summary>
|
||||||
|
[ObservableProperty]
|
||||||
|
[NotifyPropertyChangedFor(nameof(RulesToggleLabel))]
|
||||||
|
private bool _isRulesOpen;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 단추 글자. 무엇이 숨어 있고 누르면 무슨 일이 나는지 함께 적는다 -
|
||||||
|
/// 화살표만으로는 "여기 접힌 것이 있다"가 전해지지 않는다(C-3 · C-4 에서 두 번 겪었다).
|
||||||
|
/// </summary>
|
||||||
|
public string RulesToggleLabel =>
|
||||||
|
IsRulesOpen ? "▾ 저장 형식 · 비교 규칙 접기" : "▸ 저장 형식 · 비교 규칙 펴기";
|
||||||
|
|
||||||
|
[RelayCommand]
|
||||||
|
private void ToggleRules()
|
||||||
|
{
|
||||||
|
IsRulesOpen = !IsRulesOpen;
|
||||||
|
|
||||||
|
_workspace.Settings.ActionsRulesExpanded = IsRulesOpen;
|
||||||
|
_workspace.SaveSettings();
|
||||||
|
}
|
||||||
|
|
||||||
// ================= 폴더에서 훑는 중인 파일 이동 =================
|
// ================= 폴더에서 훑는 중인 파일 이동 =================
|
||||||
|
|
||||||
/// <summary>훑을 목록이 있는지. 폴더를 거치지 않고 연 파일에는 없다.</summary>
|
/// <summary>훑을 목록이 있는지. 폴더를 거치지 않고 연 파일에는 없다.</summary>
|
||||||
|
|||||||
@ -821,6 +821,14 @@
|
|||||||
</ColumnDefinition>
|
</ColumnDefinition>
|
||||||
|
|
||||||
<ColumnDefinition Width="4"/>
|
<ColumnDefinition Width="4"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
ACTIONS 칸. 접어도 폭은 그대로 둔다(4차 C-5).
|
||||||
|
<b>접는다고 폭이 줄지 않는다</b> - 폭을 정하는 것은 두 칸짜리 단추(Undo/Redo ·
|
||||||
|
이전 차이/다음 차이)와 Accept 인데, 그것들은 접어도 남는 쪽이다.
|
||||||
|
실제로 176 으로 좁혀 봤더니 "Undo" 가 "Undc" 로, "이전 차이" 가 "이전 차" 로 잘렸다.
|
||||||
|
C-5 가 얻는 것은 폭이 아니라 <b>세로 자리와 덜 어지러운 칸</b>이다.
|
||||||
|
-->
|
||||||
<ColumnDefinition Width="214" MinWidth="170"/>
|
<ColumnDefinition Width="214" MinWidth="170"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
@ -1450,15 +1458,13 @@
|
|||||||
저장 형식. 기본은 "원본 유지"라 지금까지와 똑같이 나간다.
|
저장 형식. 기본은 "원본 유지"라 지금까지와 똑같이 나간다.
|
||||||
사내 소스에 CP949 가 섞여 있어, 새로 만드는 파일과 형식이 갈릴 때 여기서 맞춘다.
|
사내 소스에 CP949 가 섞여 있어, 새로 만드는 파일과 형식이 갈릴 때 여기서 맞춘다.
|
||||||
-->
|
-->
|
||||||
<TextBlock Text="저장 형식" Style="{StaticResource Muted}" FontSize="11" Margin="0,12,0,4"/>
|
<!--
|
||||||
<UniformGrid Columns="2">
|
한 번 정하면 그대로인 것들은 접어 둔다(4차 C-5).
|
||||||
<ComboBox ItemsSource="{Binding SaveEncodings}" SelectedItem="{Binding SaveEncoding}"
|
매번 쓰는 것(반영 · 되돌리기 · 차이 이동 · 저장)과 섞여 있어 오른쪽 칸이 길었다.
|
||||||
MinHeight="26" FontSize="11" Margin="2,0"
|
단추 글자가 무엇이 숨어 있는지 말한다 - 화살표만으로는 전해지지 않는다(C-3 · C-4).
|
||||||
ToolTip="저장할 때 쓸 인코딩"/>
|
-->
|
||||||
<ComboBox ItemsSource="{Binding SaveNewLines}" SelectedItem="{Binding SaveNewLine}"
|
|
||||||
MinHeight="26" FontSize="11" Margin="2,0"
|
|
||||||
ToolTip="저장할 때 쓸 줄바꿈"/>
|
|
||||||
</UniformGrid>
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
3-Way 흐름. "안 겹치는 변경은 자동으로, 사람은 충돌만" 이 순서다.
|
3-Way 흐름. "안 겹치는 변경은 자동으로, 사람은 충돌만" 이 순서다.
|
||||||
@ -1578,8 +1584,31 @@
|
|||||||
ToolTip="줄 번호로 이동 (Ctrl+G)"/>
|
ToolTip="줄 번호로 이동 (Ctrl+G)"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<TextBlock Text="비교 규칙" Style="{StaticResource Muted}" FontSize="11" Margin="0,14,0,4"/>
|
<!--
|
||||||
<UniformGrid Columns="2">
|
여기서부터가 <b>한 번 정하면 그대로인 것들</b>이다(4차 C-5).
|
||||||
|
위쪽(반영 · 되돌리기 · 차이 이동 · 저장)과 성격이 달라 한자리에 모으고 접었다.
|
||||||
|
단추 글자가 무엇이 숨어 있는지 말한다 - 화살표만으로는 전해지지 않는다(C-3 · C-4).
|
||||||
|
-->
|
||||||
|
<Button Content="{Binding RulesToggleLabel}" Command="{Binding ToggleRulesCommand}"
|
||||||
|
MinHeight="26" FontSize="11" FontWeight="Bold" Margin="2,14,2,0"
|
||||||
|
Cursor="Hand"
|
||||||
|
Foreground="{DynamicResource Ubisam.Brush.Accent}"
|
||||||
|
ToolTip="저장 형식 · 비교 규칙 · 편집 잠금을 접거나 폅니다. 접힌 상태는 다음에 켤 때도 그대로입니다"/>
|
||||||
|
|
||||||
|
<TextBlock Text="저장 형식" Style="{StaticResource Muted}" FontSize="11" Margin="0,10,0,4"
|
||||||
|
Visibility="{Binding IsRulesOpen, Converter={StaticResource BoolToVis}}"/>
|
||||||
|
<UniformGrid Columns="2" Visibility="{Binding IsRulesOpen, Converter={StaticResource BoolToVis}}">
|
||||||
|
<ComboBox ItemsSource="{Binding SaveEncodings}" SelectedItem="{Binding SaveEncoding}"
|
||||||
|
MinHeight="26" FontSize="11" Margin="2,0"
|
||||||
|
ToolTip="저장할 때 쓸 인코딩"/>
|
||||||
|
<ComboBox ItemsSource="{Binding SaveNewLines}" SelectedItem="{Binding SaveNewLine}"
|
||||||
|
MinHeight="26" FontSize="11" Margin="2,0"
|
||||||
|
ToolTip="저장할 때 쓸 줄바꿈"/>
|
||||||
|
</UniformGrid>
|
||||||
|
|
||||||
|
<TextBlock Text="비교 규칙" Style="{StaticResource Muted}" FontSize="11" Margin="0,10,0,4"
|
||||||
|
Visibility="{Binding IsRulesOpen, Converter={StaticResource BoolToVis}}"/>
|
||||||
|
<UniformGrid Columns="2" Visibility="{Binding IsRulesOpen, Converter={StaticResource BoolToVis}}">
|
||||||
<Button Content="{Binding WhitespaceLabel}" Command="{Binding CycleWhitespaceCommand}"
|
<Button Content="{Binding WhitespaceLabel}" Command="{Binding CycleWhitespaceCommand}"
|
||||||
MinHeight="28" FontSize="11"
|
MinHeight="28" FontSize="11"
|
||||||
ToolTip="공백을 얼마나 무시할지 - 전부 비교 → 개수만 무시 → 전부 무시"/>
|
ToolTip="공백을 얼마나 무시할지 - 전부 비교 → 개수만 무시 → 전부 무시"/>
|
||||||
@ -1595,6 +1624,7 @@
|
|||||||
</UniformGrid>
|
</UniformGrid>
|
||||||
<Button Content="{Binding ReadOnlyLabel}" Click="ToggleReadOnly_Click"
|
<Button Content="{Binding ReadOnlyLabel}" Click="ToggleReadOnly_Click"
|
||||||
MinHeight="28" FontSize="11" Margin="2,4,2,0"
|
MinHeight="28" FontSize="11" Margin="2,4,2,0"
|
||||||
|
Visibility="{Binding IsRulesOpen, Converter={StaticResource BoolToVis}}"
|
||||||
ToolTip="실수로 고치는 것을 막습니다"/>
|
ToolTip="실수로 고치는 것을 막습니다"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
@ -1627,8 +1657,20 @@
|
|||||||
<StackPanel Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
|
<StackPanel Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
|
||||||
<TextBlock Text="{Binding CaretPosition}" Style="{StaticResource Mono}" FontSize="11"/>
|
<TextBlock Text="{Binding CaretPosition}" Style="{StaticResource Mono}" FontSize="11"/>
|
||||||
<Border Width="1" Margin="10,1" Background="{DynamicResource Ubisam.Brush.Input.Border}"/>
|
<Border Width="1" Margin="10,1" Background="{DynamicResource Ubisam.Brush.Input.Border}"/>
|
||||||
<TextBlock Text="{Binding DiffPosition}" FontSize="11" FontWeight="Bold"
|
<!--
|
||||||
|
차이 이동을 개수 바로 옆에 둔다(4차 C-5).
|
||||||
|
가장 자주 누르는 것인데 오른쪽 칸 끝에 있었고, 정작 "몇 번째인지"는 여기 있었다.
|
||||||
|
보는 자리와 누르는 자리가 갈려 있으면 눈과 손이 따로 움직인다.
|
||||||
|
오른쪽 칸의 큰 단추는 그대로 둔다 - 쓰던 사람 손을 빼앗지 않는다.
|
||||||
|
-->
|
||||||
|
<Button Content="◀" Command="{Binding PrevDiffCommand}"
|
||||||
|
Style="{StaticResource LegendButton}" FontSize="11" FontWeight="Bold" Margin="6,0,0,0"
|
||||||
|
ToolTip="이전 차이 (Alt+Up)"/>
|
||||||
|
<TextBlock Text="{Binding DiffPosition}" FontSize="11" FontWeight="Bold" Margin="2,0"
|
||||||
Foreground="{DynamicResource Ubisam.Brush.Accent}"/>
|
Foreground="{DynamicResource Ubisam.Brush.Accent}"/>
|
||||||
|
<Button Content="▶" Command="{Binding NextDiffCommand}"
|
||||||
|
Style="{StaticResource LegendButton}" FontSize="11" FontWeight="Bold"
|
||||||
|
ToolTip="다음 차이 (Alt+Down)"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<!-- 가운데: 얼마나 남았나 -->
|
<!-- 가운데: 얼마나 남았나 -->
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user