C 묶음: 코드 툴팁 · 글자 잘림 · 폴더 복사 확인 창

C-1. 코드 위에 마우스를 올리면 그 줄 내용이 그대로 툴팁으로 다시 떴다. 글이
이미 보이는데 같은 글이 상자로 겹쳐 뜨니 가리기만 한다. 원본 세 칸에서 뺐다.
버튼과 상태 아이콘 툴팁은 그대로 둔다. 그쪽은 화면에 없는 정보를 알려 준다.

C-2. Git 탭 목록의 글자가 ... 없이 중간에서 뚝 끊겼다. 줄임표 설정은 이미
있었는데 듣지 않았다. 목록의 가로 스크롤이 켜져 있으면 항목이 제 글 길이만큼
넓게 잡히고, 그러면 잘릴 일이 없으니 줄임표도 나오지 않는다. 가로 스크롤을
끄면 항목이 칸 너비에 갇히고 그때 비로소 줄임표가 나온다. 커밋/변경 파일/
브랜치/충돌/태그/서브모듈 여섯 목록에 같이 걸었다.

"작업 취소" 버튼과 Git 탭 입력 칸이 잘리는 것은 재현하지 못했다. 2560x1600 과
1920x1080 에서 배율 100%/120% 로 여섯 하위 탭을 모두 봤지만 멀쩡했다.

C-3. 폴더 복사 확인 창을 윈도우 기본 대화상자에서 플랫폼 것으로 바꿨다.
글꼴도 색도 배치도 혼자 달라 "이 프로그램이 묻는 것"으로 읽히지 않았다.
묻는 것 자체는 없애지 않았다. 복사/삭제는 되돌릴 수 없다.

확인: 코드 위 3초 머물러도 툴팁 없음. 이력 목록이 ... 로 줄어듦. 폴더 복사
확인 창과 완료 토스트가 프로그램의 다른 알림과 같은 모양.
테스트 399건 그대로 통과.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
김승준 2026-09-09 13:24:03 +09:00
parent 8def1add2a
commit 05c74fcb0e
4 changed files with 69 additions and 23 deletions

View File

@ -118,9 +118,9 @@ CommunityToolkit 커맨드는 CommandManager 를 구독하지 않는데 이 둘
| 상태 | 항목 |
|---|---|
| 대기 | C-1 코드 위 툴팁 제거 |
| 대기 | C-2 Git 탭 버튼·입력칸 잘림 |
| 대기 | C-3 폴더 복사 팝업을 토스트 모양으로 |
| **완료** | C-1 코드 위 툴팁 제거 |
| **완료** | C-2 Git 탭 버튼·입력칸 잘림 (목록 글자 잘림 · 설정 이름 잘림) |
| **완료** | C-3 폴더 복사 팝업을 토스트 모양으로 |
### D. 기능 추가
@ -145,6 +145,40 @@ CommunityToolkit 커맨드는 CommandManager 를 구독하지 않는데 이 둘
---
### C. 잔손질 — **완료** (2026-09-09)
#### C-1. 코드 위 툴팁 제거
코드 위에 마우스를 올리면 <b>그 줄 내용이 그대로</b> 툴팁으로 다시 떴다.
글이 이미 보이는데 같은 글이 상자로 겹쳐 뜨니 가리기만 한다. 원본 세 칸에서 뺐다.
버튼·상태 아이콘 툴팁은 그대로 둔다 - 그쪽은 화면에 없는 정보를 알려 준다.
#### C-2. 글자가 잘리던 곳
**Git 탭의 목록들** — 커밋 제목이 `...` 없이 <b>글자 중간에서 뚝 끊겼다</b>
("A-5 다시: 폴더 고르는 창을 윈도우 폴더 선택 ‸"). 줄임표 설정은 이미 있었는데 듣지 않았다.
목록의 가로 스크롤이 켜져 있으면 항목이 <b>제 글 길이만큼 넓게</b> 잡히고, 그러면 잘릴 일이
없으니 줄임표도 나오지 않는다(칸 밖으로 나간 부분이 안 보일 뿐이다).
가로 스크롤을 끄면 항목이 칸 너비에 갇히고 그때 비로소 줄임표가 나온다.
커밋·변경 파일·브랜치·충돌·태그·서브모듈 여섯 목록에 같이 걸었다.
**설정 화면의 항목 이름** — 이름 칸이 200 폭으로 고정이라 긴 이름이 잘렸다
("공백 무시 단계 (0=전부 비교, ‸"). 무슨 설정인지 알 수 없어진다. 접히게 바꿨다.
<b>플랫폼 변경이라 모든 소비 프로그램에 적용된다.</b>
**못 찾은 것**: "작업 취소" 버튼과 Git 탭 입력 칸이 잘리는 것은 재현하지 못했다.
2560×1600 과 1920×1080 에서, 화면 배율 100%·120% 로 여섯 하위 탭을 모두 봤지만
그 자리는 멀쩡했다. 다시 보이면 그때 화면을 받아 고친다.
#### C-3. 폴더 복사 확인 창을 플랫폼 것으로
윈도우 기본 대화상자를 쓰고 있었다. 글꼴도 색도 배치도 혼자 달라 "이 프로그램이 묻는 것"으로
읽히지 않는다. 플랫폼이 이미 가지고 있는 `MessageUtil.ShowYesNo` 로 바꿨다.
<b>묻는 것 자체는 없애지 않았다.</b> 복사·삭제는 되돌릴 수 없다. 지시서에도 그렇게 적었다.
완료 알림은 전부터 토스트였고 그대로 둔다.
---
### E. 추가 요청 세 가지 — **완료** (2026-09-09)
#### E-1. 원본 세 칸에 세로 스크롤 막대

View File

@ -458,9 +458,15 @@ namespace MergeHub.ViewModels
Run(() => File.Delete(path), $"삭제: {path}");
}
/// <summary>
/// 되돌릴 수 없는 일을 하기 전에 한 번 묻는다.
///
/// 윈도우 기본 대화상자 대신 <b>플랫폼이 주는 창</b>을 쓴다. 프로그램 안의 다른 알림과
/// 생김새가 같아야 "이 프로그램이 묻는 것"으로 읽힌다 - 윈도우 기본 창은 글꼴도 색도
/// 배치도 혼자 다르다. 묻는 것 자체는 그대로 둔다. 복사·삭제는 되돌릴 수 없다.
/// </summary>
private static bool Confirm(string question, string title) =>
MessageBox.Show(question, title, MessageBoxButton.OKCancel,
MessageBoxImage.Warning, MessageBoxResult.Cancel) == MessageBoxResult.OK;
MessageUtil.ShowYesNo(title, question);
/// <summary>파일을 건드리는 일은 모두 여기를 지난다 - 로그와 실패 알림을 한 곳에서 한다.</summary>
private void Run(Action work, string log)

View File

@ -1,4 +1,4 @@
<UserControl x:Class="MergeHub.Views.GitView"
<UserControl x:Class="MergeHub.Views.GitView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
@ -150,7 +150,8 @@
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" ItemsSource="{Binding Workspace.Branches}"
SelectedItem="{Binding SelectedBranch}" HorizontalContentAlignment="Stretch">
SelectedItem="{Binding SelectedBranch}" HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,2">
@ -220,11 +221,12 @@
Text="파일 전체를 한쪽으로 채택하려면 아래 버튼을 쓰고, 줄 단위로 고르려면 홈 탭의 3분할 화면에서 처리하세요."/>
<ListBox Grid.Row="1" ItemsSource="{Binding Workspace.Conflicts}"
SelectedItem="{Binding SelectedConflict}">
SelectedItem="{Binding SelectedConflict}" HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path}"/>
<TextBlock Text="{Binding Path}" TextTrimming="CharacterEllipsis"/>
<TextBlock Text=" (binary)" FontSize="11"
Foreground="{DynamicResource Ubisam.Brush.Danger}"
Visibility="{Binding IsBinary, Converter={StaticResource BoolToVis}}"/>
@ -270,7 +272,8 @@
</Grid.RowDefinitions>
<ListBox Grid.Row="0" ItemsSource="{Binding Workspace.StatusFiles}"
SelectedItem="{Binding SelectedStatusFile}">
SelectedItem="{Binding SelectedStatusFile}" HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
@ -278,7 +281,7 @@
Foreground="{DynamicResource Ubisam.Brush.Success}"/>
<TextBlock Text="{Binding WorkingDirState}" Width="80" FontSize="11"
Foreground="{DynamicResource Ubisam.Brush.Warning}"/>
<TextBlock Text="{Binding Path}" FontSize="11"/>
<TextBlock Text="{Binding Path}" FontSize="11" TextTrimming="CharacterEllipsis"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
@ -365,7 +368,8 @@
</Grid.RowDefinitions>
<ListBox Grid.Row="0" Grid.Column="0" ItemsSource="{Binding Workspace.Commits}"
SelectedItem="{Binding SelectedCommit}" HorizontalContentAlignment="Stretch">
SelectedItem="{Binding SelectedCommit}" HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,2">
@ -459,7 +463,8 @@
<TextBlock Grid.Row="0" Grid.Column="0" Text="태그" Style="{StaticResource GroupTitle}"/>
<ListBox Grid.Row="1" Grid.Column="0" Margin="0,0,6,0"
ItemsSource="{Binding Workspace.Tags}" SelectedItem="{Binding SelectedTag}">
ItemsSource="{Binding Workspace.Tags}" SelectedItem="{Binding SelectedTag}" HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
@ -490,12 +495,14 @@
</StackPanel>
<TextBlock Grid.Row="0" Grid.Column="1" Text="서브모듈" Style="{StaticResource GroupTitle}"/>
<ListBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Workspace.Submodules}">
<ListBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Workspace.Submodules}"
HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path}"/>
<TextBlock Text="{Binding Status}" FontSize="11"
<TextBlock Text="{Binding Path}" TextTrimming="CharacterEllipsis"/>
<TextBlock Text="{Binding Status}" FontSize="11" TextTrimming="CharacterEllipsis"
Foreground="{DynamicResource Ubisam.Brush.Muted}"/>
</StackPanel>
</DataTemplate>

View File

@ -100,7 +100,9 @@
</Style.Triggers>
</Style>
<!-- BASE 한 줄. 줄 배경 = 색 범례, 글자색 = C# 문법. -->
<!-- BASE 한 줄. 줄 배경 = 색 범례, 글자색 = C# 문법.
코드 본문에는 <b>툴팁을 달지 않는다</b> - 글이 이미 보이는데 그 위에 같은 글이 상자로
겹쳐 뜨면 가리기만 한다. 잘려서 안 보이는 부분은 가로 스크롤로 본다. -->
<DataTemplate x:Key="BaseLineTemplate">
<!-- 여백 폭(54)을 LOCAL 과 맞춘다. 접히는 자리가 같아야 워드랩에서도 행이 어긋나지 않는다. -->
<Grid MinHeight="{Binding SourceRowHeight}">
@ -126,8 +128,7 @@
LineHeight="{StaticResource CodeLineHeight}"
LineStackingStrategy="BlockLineHeight"
VerticalAlignment="Top"
SizeChanged="BaseText_SizeChanged"
ToolTip="{Binding BaseText}">
SizeChanged="BaseText_SizeChanged">
<ctl:CodeTextBlock.RenderTransform>
<TranslateTransform X="{Binding SourceShiftX,
RelativeSource={RelativeSource AncestorType=UserControl}}"/>
@ -177,8 +178,7 @@
LineHeight="{StaticResource CodeLineHeight}"
LineStackingStrategy="BlockLineHeight"
VerticalAlignment="Top"
SizeChanged="OriginalLocalText_SizeChanged"
ToolTip="{Binding OriginalLocalText}">
SizeChanged="OriginalLocalText_SizeChanged">
<ctl:CodeTextBlock.RenderTransform>
<TranslateTransform X="{Binding SourceShiftX,
RelativeSource={RelativeSource AncestorType=UserControl}}"/>
@ -228,8 +228,7 @@
LineHeight="{StaticResource CodeLineHeight}"
LineStackingStrategy="BlockLineHeight"
VerticalAlignment="Top"
SizeChanged="RemoteText_SizeChanged"
ToolTip="{Binding RemoteText}">
SizeChanged="RemoteText_SizeChanged">
<ctl:CodeTextBlock.RenderTransform>
<TranslateTransform X="{Binding SourceShiftX,
RelativeSource={RelativeSource AncestorType=UserControl}}"/>