6차 B-4: 네 칸 줄 여백을 66px 로 넓혀 MERGED 줄 번호가 잘리지 않게 한다
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
21a2dc9b79
commit
ddce51d375
@ -467,3 +467,55 @@ B-1 확인 때는 늘 파일 비교 탭을 먼저 열어 두었다. 순서를
|
|||||||
| 저장소를 새로 만들어 병합 → 파일을 열어 칸이 채워진 채로 충돌을 풀고 **앱을 끄지 않고** [병합 커밋] | 커밋 메시지 같은 한 줄, `#` 줄 0개, 부모 2개. **파일 비교 탭 메시지 칸이 비워짐** |
|
| 저장소를 새로 만들어 병합 → 파일을 열어 칸이 채워진 채로 충돌을 풀고 **앱을 끄지 않고** [병합 커밋] | 커밋 메시지 같은 한 줄, `#` 줄 0개, 부모 2개. **파일 비교 탭 메시지 칸이 비워짐** |
|
||||||
|
|
||||||
화면 확인 **7건 통과**. 빌드 경고 0 · 오류 0.
|
화면 확인 **7건 통과**. 빌드 경고 0 · 오류 0.
|
||||||
|
|
||||||
|
## B-4. MERGED 칸 줄 번호가 네 자리에서 잘린다 (2026-09-14, 완료)
|
||||||
|
|
||||||
|
### 고치기 전에 다시 났다
|
||||||
|
|
||||||
|
새로 만든 저장소(충돌 23개)를 병합하고 `Motion/Unit0.cs`(3,363줄)를 네 칸으로 열어 편집기에서 Ctrl+End 를 눌렀다.
|
||||||
|
|
||||||
|
| 칸 | 보인 번호 |
|
||||||
|
|---|---|
|
||||||
|
| LOCAL · BASE · REMOTE | `2949` · `2950` 온전 |
|
||||||
|
| **MERGED** | **`294` · `295` · `295`** — 2949 · 2950 · 2951 줄 |
|
||||||
|
|
||||||
|
### 무엇이 원인이었나
|
||||||
|
|
||||||
|
줄 여백 폭은 네 칸 모두 54px 로 같지만 **나눈 방법이 달랐다.**
|
||||||
|
|
||||||
|
| 칸 | 여백 나눔 | 번호 글자 자리 |
|
||||||
|
|---|---|---|
|
||||||
|
| BASE | 번호 54 (오른쪽 띄움 8) | 46px |
|
||||||
|
| LOCAL 원본 · REMOTE | 번호 34 (띄움 4) + [<]/[>] 20 | 30px |
|
||||||
|
| MERGED | 북마크 10 + 번호 24 (띄움 4) + [>] 20 | **20px** |
|
||||||
|
|
||||||
|
Consolas 12 는 한 글자 약 6.6px 라 20px 에는 세 자리만 들어간다. MERGED 칸만 북마크 막대 자리를 따로 떼어 번호가 가장 좁았다.
|
||||||
|
|
||||||
|
### 고친 것 (`Views/HomeView.xaml` 만)
|
||||||
|
|
||||||
|
여백을 네 칸 모두 **66px** 로 넓혔다. 칸마다 폭이 같아야 워드랩에서 접히는 자리가 같다(한 칸만 넓히면 행이 어긋난다).
|
||||||
|
|
||||||
|
| 자리 | 전 | 후 | 번호 글자 자리 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| BASE 템플릿 | 54 | 66 | 58px |
|
||||||
|
| LOCAL 원본 · REMOTE 템플릿 | 34 + 20 | 46 + 20 | 42px |
|
||||||
|
| MERGED 템플릿 | 10 + 24 + 20 | **6 + 40 + 20** | **36px** — 다섯 자리(99,999줄)까지 |
|
||||||
|
| 위에 겹친 편집기 `LocalEditor` 왼쪽 여백 | 54 | 66 | — 아래층 글자와 x 가 같아야 캐럿이 맞는다 |
|
||||||
|
|
||||||
|
북마크 막대는 너비 4 · 좌우 띄움 1 이라 6px 로 모자람이 없다. 칸마다 코드 자리가 12px 줄었다.
|
||||||
|
|
||||||
|
### 확인한 것
|
||||||
|
|
||||||
|
| 확인 | 결과 |
|
||||||
|
|---|---|
|
||||||
|
| C-1 저장소 `Motion/Unit0.cs` 네 칸, Ctrl+End | MERGED `2949` · `2950` · `2951` 온전. 확대해 보니 [>] 단추와도 안 겹친다. 위 세 칸도 온전 |
|
||||||
|
| 만든 저장소(`Big7479.cs` 7,479줄, 2950 · 7470 줄 양쪽이 다르게 고침)를 MergeHub 로 병합, 네 칸, Ctrl+End | **네 칸 모두** `7462` ~ `7470` 온전. 충돌 2 |
|
||||||
|
| 7,479줄 두 파일을 `--merge` 인자로 열기(두 칸) | BASE · LOCAL `7440` ~ `7479` 온전 |
|
||||||
|
| 편집기와 아래층이 맞는가 | 7468 줄에서 Ctrl+Shift+→ 로 `public ` 을 고르니(UIA 로 읽은 선택 글도 `public `) 선택 영역이 아래층의 `public` 글자에 딱 겹친다 |
|
||||||
|
|
||||||
|
빌드 경고 0 · 오류 0. 고친 파일은 XAML 뿐이라 검사 하네스는 영향이 없다.
|
||||||
|
|
||||||
|
### 확인하다 본 것 (고치지 않음)
|
||||||
|
|
||||||
|
- 3분할에서 Ctrl+End 를 누르면 캐럿이 파일 끝이 아니라 **마지막 충돌 줄**(2951 · 7470)에 서고, 네 칸 모두 **그 아래가 빈 채**로 그려진다. 고치기 전 화면에서도 같았다 — B-4 와 무관하다.
|
||||||
|
- 저장소 밖 파일을 `--merge --base --local --remote --merged` 로 넘기면 네 칸이 아니라 BASE · LOCAL 두 칸으로 열린다.
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
| 날짜 | 항목 | 커밋 |
|
| 날짜 | 항목 | 커밋 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| 2026-09-14 | **6차 B-4** — 3분할 MERGED 칸 줄 번호 자리가 20px 라 2949 가 "294" 로 잘리던 것을 고침. 네 칸 여백을 54 → 66px 로 맞춰 넓혀 다섯 자리까지 보인다 | 아래 |
|
||||||
| 2026-09-14 | **6차 B-3** — 병합 커밋 기본 메시지를 `Merge branch '상대' into 내 브랜치` 로. 첫 파일 이름이 굳어 남던 것, 커밋에 `#Conflicts:` 줄 24개와 해시 첫 줄이 들어가던 것을 고침. 병합이 끝나면 스스로 채운 글만 지운다 | 아래 |
|
| 2026-09-14 | **6차 B-3** — 병합 커밋 기본 메시지를 `Merge branch '상대' into 내 브랜치` 로. 첫 파일 이름이 굳어 남던 것, 커밋에 `#Conflicts:` 줄 24개와 해시 첫 줄이 들어가던 것을 고침. 병합이 끝나면 스스로 채운 글만 지운다 | 아래 |
|
||||||
| 2026-09-14 | **6차 B-2** — 파일을 바꿀 때 확인 창이 고친 파일 이름을 대고, [저장하고 계속] 이 엉뚱한 파일(새로 고른 파일)에 쓰던 것을 막음. [취소] 뒤 콤보가 제자리로. 저장소를 먼저 열면 목록이 0개이던 B-1 빈틈도 | 아래 |
|
| 2026-09-14 | **6차 B-2** — 파일을 바꿀 때 확인 창이 고친 파일 이름을 대고, [저장하고 계속] 이 엉뚱한 파일(새로 고른 파일)에 쓰던 것을 막음. [취소] 뒤 콤보가 제자리로. 저장소를 먼저 열면 목록이 0개이던 B-1 빈틈도 | 아래 |
|
||||||
| 2026-09-14 | **6차 B-1** — 새로고침 뒤 파일 목록을 게이트가 풀릴 때까지 기다렸다 세움(병합 뒤 304개 → 23개). 충돌 목록 두 번 누르기·Enter·[3분할로 열기] 로 파일 비교 탭 네 칸에서 연다. 없는 '홈 탭' 글을 고침 | 아래 |
|
| 2026-09-14 | **6차 B-1** — 새로고침 뒤 파일 목록을 게이트가 풀릴 때까지 기다렸다 세움(병합 뒤 304개 → 23개). 충돌 목록 두 번 누르기·Enter·[3분할로 열기] 로 파일 비교 탭 네 칸에서 연다. 없는 '홈 탭' 글을 고침 | 아래 |
|
||||||
|
|||||||
@ -106,7 +106,7 @@
|
|||||||
| **완료** | B-1 충돌 목록에서 3분할 화면까지 가는 길이 끊겨 있다 — 병합 뒤 목록이 바로 서고, 두 번 누르기·Enter·[3분할로 열기] |
|
| **완료** | B-1 충돌 목록에서 3분할 화면까지 가는 길이 끊겨 있다 — 병합 뒤 목록이 바로 서고, 두 번 누르기·Enter·[3분할로 열기] |
|
||||||
| **완료** | B-2 확인 창이 엉뚱한 파일 이름을 댄다 — 이름·[저장하고 계속] 모두 실린 파일 기준, [취소] 뒤 콤보도 돌아온다 |
|
| **완료** | B-2 확인 창이 엉뚱한 파일 이름을 댄다 — 이름·[저장하고 계속] 모두 실린 파일 기준, [취소] 뒤 콤보도 돌아온다 |
|
||||||
| **완료** | B-3 커밋 메시지가 엉뚱하게 남는다 — 기본값 `Merge branch '상대' into 내 브랜치`, `#` 줄 뺌, 병합이 끝나면 칸을 비움 |
|
| **완료** | B-3 커밋 메시지가 엉뚱하게 남는다 — 기본값 `Merge branch '상대' into 내 브랜치`, `#` 줄 뺌, 병합이 끝나면 칸을 비움 |
|
||||||
| 대기 | B-4 MERGED 칸 줄 번호가 네 자리에서 잘린다 |
|
| **완료** | B-4 MERGED 칸 줄 번호가 네 자리에서 잘린다 — 네 칸 여백을 66px 로, MERGED 번호 자리 20 → 36px(다섯 자리) |
|
||||||
| 대기 | B-5 머지 주석은 소스에 넣고, 병합 뒤에는 그 줄을 무시한다 |
|
| 대기 | B-5 머지 주석은 소스에 넣고, 병합 뒤에는 그 줄을 무시한다 |
|
||||||
| 대기 | B-6 충돌 탭에서 하나씩 누를 때마다 오래 기다린다 |
|
| 대기 | B-6 충돌 탭에서 하나씩 누를 때마다 오래 기다린다 |
|
||||||
| 대기 | B-7 상태바가 병합 중에 믿을 수 없는 값을 보인다 |
|
| 대기 | B-7 상태바가 병합 중에 믿을 수 없는 값을 보인다 |
|
||||||
|
|||||||
@ -139,10 +139,11 @@
|
|||||||
코드 본문에는 <b>툴팁을 달지 않는다</b> - 글이 이미 보이는데 그 위에 같은 글이 상자로
|
코드 본문에는 <b>툴팁을 달지 않는다</b> - 글이 이미 보이는데 그 위에 같은 글이 상자로
|
||||||
겹쳐 뜨면 가리기만 한다. 잘려서 안 보이는 부분은 가로 스크롤로 본다. -->
|
겹쳐 뜨면 가리기만 한다. 잘려서 안 보이는 부분은 가로 스크롤로 본다. -->
|
||||||
<DataTemplate x:Key="BaseLineTemplate">
|
<DataTemplate x:Key="BaseLineTemplate">
|
||||||
<!-- 여백 폭(54)을 LOCAL 과 맞춘다. 접히는 자리가 같아야 워드랩에서도 행이 어긋나지 않는다. -->
|
<!-- 여백 폭(66)을 LOCAL 과 맞춘다. 접히는 자리가 같아야 워드랩에서도 행이 어긋나지 않는다.
|
||||||
|
66 인 까닭은 LocalLineTemplate 에 적었다(6차 B-4). -->
|
||||||
<Grid MinHeight="{Binding SourceRowHeight}">
|
<Grid MinHeight="{Binding SourceRowHeight}">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="54"/>
|
<ColumnDefinition Width="66"/>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Grid.Column="0" Text="{Binding BaseNumberText}" Style="{StaticResource Mono}"
|
<TextBlock Grid.Column="0" Text="{Binding BaseNumberText}" Style="{StaticResource Mono}"
|
||||||
@ -181,7 +182,7 @@
|
|||||||
<DataTemplate x:Key="OriginalLocalLineTemplate">
|
<DataTemplate x:Key="OriginalLocalLineTemplate">
|
||||||
<Grid MinHeight="{Binding SourceRowHeight}">
|
<Grid MinHeight="{Binding SourceRowHeight}">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="34"/>
|
<ColumnDefinition Width="46"/>
|
||||||
<ColumnDefinition Width="20"/>
|
<ColumnDefinition Width="20"/>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
@ -231,7 +232,7 @@
|
|||||||
<DataTemplate x:Key="RemoteLineTemplate">
|
<DataTemplate x:Key="RemoteLineTemplate">
|
||||||
<Grid MinHeight="{Binding SourceRowHeight}">
|
<Grid MinHeight="{Binding SourceRowHeight}">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="34"/>
|
<ColumnDefinition Width="46"/>
|
||||||
<ColumnDefinition Width="20"/>
|
<ColumnDefinition Width="20"/>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
@ -283,14 +284,19 @@
|
|||||||
대신 가로로 밀 때 여백까지 밀리면 안 되므로, 본문 글자만
|
대신 가로로 밀 때 여백까지 밀리면 안 되므로, 본문 글자만
|
||||||
TextShiftX(편집기의 가로 스크롤 값)만큼 밀고 열 안에서 잘라낸다.
|
TextShiftX(편집기의 가로 스크롤 값)만큼 밀고 열 안에서 잘라낸다.
|
||||||
글자를 고치는 일은 이 위에 겹쳐 놓은 편집기(LocalEditor)가 맡는다.
|
글자를 고치는 일은 이 위에 겹쳐 놓은 편집기(LocalEditor)가 맡는다.
|
||||||
|
|
||||||
|
여백 폭은 66 = 북마크 6 + 줄 번호 40 + [>] 20. 네 칸이 모두 66 이다(6차 B-4).
|
||||||
|
예전에는 54 = 10 + 24 + 20 이라 줄 번호 글자 자리가 20px(Consolas 12 로 세 자리)뿐이어서
|
||||||
|
2949 가 "294" 로 잘렸다. 위의 세 칸은 번호 자리가 30px 이상이라 멀쩡했다.
|
||||||
|
지금은 번호 자리 36px 로 다섯 자리(99,999줄)까지 들어간다.
|
||||||
-->
|
-->
|
||||||
<DataTemplate x:Key="LocalLineTemplate">
|
<DataTemplate x:Key="LocalLineTemplate">
|
||||||
<Grid Background="Transparent"
|
<Grid Background="Transparent"
|
||||||
MinHeight="{Binding RowHeight}"
|
MinHeight="{Binding RowHeight}"
|
||||||
MouseLeftButtonDown="Gutter_MouseLeftButtonDown">
|
MouseLeftButtonDown="Gutter_MouseLeftButtonDown">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="10"/>
|
<ColumnDefinition Width="6"/>
|
||||||
<ColumnDefinition Width="24"/>
|
<ColumnDefinition Width="40"/>
|
||||||
<ColumnDefinition Width="20"/>
|
<ColumnDefinition Width="20"/>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
@ -1210,7 +1216,7 @@
|
|||||||
편집기 글자는 투명이라 아래층 색이 그대로 보이고, 캐럿·선택 영역만 편집기가 그린다.
|
편집기 글자는 투명이라 아래층 색이 그대로 보이고, 캐럿·선택 영역만 편집기가 그린다.
|
||||||
둘의 글꼴·줄 높이가 정확히 같아야 어긋나지 않는다.
|
둘의 글꼴·줄 높이가 정확히 같아야 어긋나지 않는다.
|
||||||
|
|
||||||
편집기는 여백 폭(54)만큼 왼쪽을 비워 두어, 그 자리의 [>] 버튼과
|
편집기는 여백 폭(66)만큼 왼쪽을 비워 두어, 그 자리의 [>] 버튼과
|
||||||
북마크 더블클릭이 아래층까지 닿게 한다.
|
북마크 더블클릭이 아래층까지 닿게 한다.
|
||||||
-->
|
-->
|
||||||
<Grid Grid.Column="0">
|
<Grid Grid.Column="0">
|
||||||
@ -1232,7 +1238,7 @@
|
|||||||
세로 스크롤 막대를 늘 띄워 두는 이유 - 나타났다 사라지면 글 너비가 바뀌어
|
세로 스크롤 막대를 늘 띄워 두는 이유 - 나타났다 사라지면 글 너비가 바뀌어
|
||||||
워드랩 접히는 자리가 아래층과 어긋난다.
|
워드랩 접히는 자리가 아래층과 어긋난다.
|
||||||
-->
|
-->
|
||||||
<TextBox x:Name="LocalEditor" Style="{x:Null}" Margin="54,0,0,0"
|
<TextBox x:Name="LocalEditor" Style="{x:Null}" Margin="66,0,0,0"
|
||||||
FontFamily="Consolas" FontSize="12"
|
FontFamily="Consolas" FontSize="12"
|
||||||
TextBlock.LineHeight="{StaticResource CodeLineHeight}"
|
TextBlock.LineHeight="{StaticResource CodeLineHeight}"
|
||||||
TextBlock.LineStackingStrategy="BlockLineHeight"
|
TextBlock.LineStackingStrategy="BlockLineHeight"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user