Git 탭 끌어다 놓기 · 파일 비교 편집 칸 바탕색 (사용자 요청)
Git 탭에 폴더나 파일을 끌어다 놓으면 그 저장소를 연다. [폴더...] 와 같은 규칙을 PathUtil.RepositoryFolderFor 한 곳에 두었다 - 파일이면 그 폴더, 저장소 안이면 최상위, 저장소가 아니면 그 폴더 그대로(열기가 "저장소가 아니다" 를 알린다). 탭 전체에서 PreviewDrop 으로 받는다. 경로 칸 · 커밋 메시지 칸이 TextBox 라 파일 놓기를 먼저 먹고 버리는 문제를 폴더 비교(7차 E-2)에서 겪었다. PathTest 6건을 먼저 넣어 실패 확인 -> 68건 통과. 흉내 낸 OLE 끌기는 이미 되는 폴더 비교 칸에도 들어가지 않아 도구 한계로 보고, 사용자가 직접 끌어다 놓아 확인했다(로그에 저장소 열기 두 번, 그 사이 단추 누름 없음). 파일 비교 편집 칸은 바탕이 없어 페이지 바탕(밝음 #F2F2F3 · 어두움 #23262B)이 비쳐 회색이었다. PaneBackgroundConverter 가 물려받은 글자색 밝기로 테마를 가려 밝음 #FAFAFA · 어두움 #252830 을 준다 - 후보를 실제 코드 색으로 그려 보여 주고 사용자가 골랐다. g11-pane 두 테마에서 빈 자리 화소로 확인. 하단 탭이 따라가지 않던 문제(폴더 비교 -> 두 번 눌러 파일 비교)는 공용 플랫폼 셸에서 고쳤다(MergeHub 코드 변경 없음, 기록만). Agent: main (claude-opus-5-5) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
b7ade6a800
commit
4d0bc5c7a7
@ -2,6 +2,34 @@
|
||||
|
||||
지시서: [../작업지시/12차.md](../작업지시/12차.md)
|
||||
|
||||
## 커밋 뒤 사용자 요청 셋 (2026-09-30 · 완료)
|
||||
|
||||
### 폴더 비교 → 두 번 눌러 파일 비교로 가도 하단 탭이 "폴더 비교" 에 남는다 (사용자 보고 · 플랫폼에서 고침)
|
||||
|
||||
사용자가 쓰던 앱을 **읽기만** 해서 재현 — 화면은 파일 비교(편집기 보임, 폴더 칸 안 보임)인데 하단 탭 선택은 0번.
|
||||
원인은 MergeHub 가 아니라 공용 플랫폼: 셸의 `NavList` 는 동작형 항목을 섞느라 `SelectedMainTab` 에 바인딩하지 않고 켤 때 한 번만 넣는다.
|
||||
사람이 누를 때만 화면 쪽으로 알리므로, 코드가 탭을 바꾸면(`TabManager.Activate` — 폴더 비교 두 번 누르기 두 곳 · Git 충돌 열기 ·
|
||||
파일 비교 → 폴더) 화면만 바뀐다. 사용자 허락("플랫폼 고쳐줘")을 받아 `UbisamCommonPlatform` 의 `ShellWindow` 가
|
||||
`SelectedMainTab` 변화를 듣고 선택만 맞추게 고쳤다(플랫폼 저장소 changelog · 가이드에 적음). 빌드 = 이 PC 배포 폴더에 바로 반영,
|
||||
전 상태는 `D:\UbisamPlatform\bin-backup-navsync`. 화면 `g10-drop` ①: 두 번 누른 뒤 하단 탭 선택 **[0] → [1]**.
|
||||
|
||||
### Git 탭에 폴더를 끌어다 놓으면 연다 (사용자 요청)
|
||||
|
||||
- `PathUtil.RepositoryFolderFor` — 파일이면 그 폴더, 저장소 안이면 최상위, 저장소가 아니면 그 폴더 그대로(열기가 알린다). `[폴더...]` 도 같은 함수로 바꿨다.
|
||||
- Git 탭 전체에서 `PreviewDragOver` · `PreviewDrop` 으로 받는다 — 경로 칸 · 커밋 메시지 칸(TextBox)이 파일 놓기를 먼저 먹는 문제(7차 E-2)를 피한다.
|
||||
파일 놓기만 가로채고 글자 끌어다 놓기는 그대로. 여럿이면 첫 것.
|
||||
- 하네스 `PathTest` 6건을 먼저 넣어 **컴파일 실패** 확인 → 62 → 68건.
|
||||
- 화면: 흉내 낸 OLE 끌기(작은 창에서 `DoDragDrop` + 다른 실이 마우스를 옮김)는 **이미 되는 폴더 비교 칸에도 안 들어갔다**(결과 None) —
|
||||
시험 도구의 한계로 보고(창 끌기와 같은 부류), **사용자가 직접 끌어다 놓아 확인**: 로그 17:03 · 17:04 `저장소 열기: D:\Sorce\UbisamCommonPlatform\`
|
||||
(그 사이 [폴더...] · [열기] 누름 기록 없음, 오류 없음).
|
||||
|
||||
### 파일 비교 편집 칸 바탕 (사용자 요청 "회색 말고, 어중간하게 말고")
|
||||
|
||||
칸에 바탕이 없어 페이지 바탕(밝음 #F2F2F3 · 어두움 #23262B, 둘 다 회색)이 비쳤다. 플랫폼 토큰에 맞는 짝이 없어 `PaneBackgroundConverter` 가
|
||||
물려받은 글자색 밝기로 테마를 가린다(코드 글자색과 같은 방법). 흰색 · 순검정 → "너무 까맣다" → #1E1E1E → "둘 다 보기 편하게" 에서
|
||||
후보 네 개씩을 실제 코드 색으로 그려 보여 드렸고 **사용자가 밝음 #FAFAFA · 어두움 #252830** 을 골랐다. 네 칸(BASE · LOCAL · 원본 LOCAL · REMOTE)에.
|
||||
화면 `g11-pane` 두 테마: 빈 자리 화소 #FAFAFA / #252830 (BaseLines · LocalEditor 모두).
|
||||
|
||||
## G 묶음 마무리 — 알파 · 베타 전 정리 (2026-09-30, 사용자 지시 · 완료)
|
||||
|
||||
### 설정의 "프로그램 정보" 칸을 뺐다
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
|
||||
| 날짜 | 항목 | 커밋 |
|
||||
|---|---|---|
|
||||
| 2026-09-30 | **커밋 뒤 사용자 요청 셋** — ① 폴더 비교에서 두 번 눌러 파일 비교로 가도 하단 탭이 옛 탭에 남던 것: 사용자가 쓰던 앱을 읽기만 해서 재현(화면 파일 비교 · 선택 0번), 원인은 공용 플랫폼 셸의 `NavList` 가 `SelectedMainTab` 을 따라가지 않는 것 — 허락받아 `UbisamCommonPlatform` 에서 고침(MergeHub 코드 변경 없음), `g10-drop` 선택 [0] → [1]. ② Git 탭에 폴더 · 파일을 끌어다 놓으면 그 저장소 최상위를 연다(`PathUtil.RepositoryFolderFor`, `[폴더...]` 와 같은 규칙, 탭 전체 Preview 로 받아 TextBox 가 먹는 문제 회피). `PathTest` 62 → 68건(먼저 실패 확인). 흉내 낸 OLE 끌기는 이미 되는 폴더 비교 칸에도 안 들어가 도구 한계로 보고 사용자가 직접 확인(로그 저장소 열기 두 번). ③ 파일 비교 편집 칸 바탕을 회색(페이지 바탕이 비침) → 밝음 #FAFAFA · 어두움 #252830(순검정 · #1E1E1E 를 거쳐 후보를 보고 사용자가 고름, `PaneBackgroundConverter`). `g11-pane` 두 테마 화소로 확인. 빌드 경고 0 · 오류 0 | 아래 |
|
||||
| 2026-09-30 | **12차 G 묶음 마무리(알파 · 베타 전)** — ① 설정의 `프로그램 정보`(만든 사람 · 사내 문의처) 칸을 뺐다 — 개발자 정보가 담당을 보인다(사용자). [정보] 창은 실행 파일 값만 읽고(`ProgramInfoReader.For` 의 설정 인수를 걷음), 빈 칸 안내 글에서 없어진 설정 자리를 뺐다. ② 사용자 요청 "작성자를 입력하지 않으면 알람" — 주석 남기기가 켜져 있는데 작성자가 비면 **반영 명령 맨 앞**(여덟 곳)에서 알림 창을 띄우고 반영하지 않는다(사용자 선택, 줄마다가 아니라 명령마다 — [모두 반영] 이 줄 수만큼 알리지 않게). 예전에는 git 이름 · 윈도우 계정으로 조용히 채웠다. 미리보기도 그 이름을 안 보인다. 한때 "주석 늘 켬" 으로 바꿨다가 사용자 지시로 원복. ③ 데모(설정 두 칸 · [데모 →] 단추 · 전환 코드)를 걷어냄. 이 PC 의 시험 재료는 휴지통으로, 설정 · 최근 목록의 시험 경로를 비움. 하네스 `AboutTest` 30 · `NoteTest` 99 · `OverviewTest` 15건(둘은 먼저 고쳐 컴파일 실패 확인), 화면 `g5` · `g6` · `g9-author`(새) 실패 0. 빌드 경고 0 · 오류 0 | 아래 |
|
||||
| 2026-09-30 | **12차 G-6 고침** — 사용자 지시로 개발자 정보 담당 카드를 갈래 둘(`Platform` 최민영 대리 · `MergeHub` 김승준 사원, 이름표 영문)로 바꾸고 사내 문의처는 **카드에서만** 뺐다([정보] 창과 G-5 구조는 그대로 — 사용자 선택). 사람은 `ProgramOverview` 상수 둘 — 설정의 "만든 사람" 은 정보 창의 회사 이름 받침이라 섞지 않는다. 소개 문구를 `사내 Git Merge/Diff 도구` → **`사내 Merge/Diff + Git 도구`**(Merge 가 먼저)로 csproj `<Description>` · 개발자 정보 기본값 · 정보 창 받침 · 창 제목(`MergeHub - 사내 Merge/Diff + Git`) 네 곳을 맞춤 — 창 제목은 플랫폼이 표시에만 쓰는 것을 읽어 확인. 하네스 `OverviewTest` 기대값을 먼저 바꿔 4건 실패 → 15건 통과, `AboutTest` 30건, 화면 `g6-verify` · `g5-verify` 실패 0. 빌드 경고 0 · 오류 0 | 아래 |
|
||||
| 2026-09-30 | **12차 G-8** — 메모 편집기에 문법 강조 · 같은 글 칠하기 · 색 마킹 다섯(Ctrl+1~5) · 오른쪽 위치 막대. 방식은 파일 비교와 같은 **투명한 TextBox + 아래층**(사용자 결정 — RichTextBox 는 칠하기가 되돌리기에 섞여 버림). 셈은 `MemoHighlight.cs`(하네스 `MemoHlTest` 45건), 그리기는 `MemoPaintLayer`(글자 자리를 편집기 `GetRectFromCharacterIndex` 에 묻고 탭마다 끊어 다시 묻는다). 언어 · 마킹은 메모마다 따로, 보관하지 않는다. 화면에서 셋을 고쳤다: ① 첫 시험에서 칠한 잉크가 0px — 플랫폼 암시적 TextBox 스타일이 템플릿 안에서 배경을 직접 칠해 아래층을 덮었다(LocalEditor 와 같은 까닭) → 편집기 · 줄 번호 칸 `Style="{x:Null}"`, 선택 색은 LocalEditor 와 같은 값 ② 강조 콤보에 형 이름이 보임 → `LanguageProfile.ToString() => Name`(G-4 `SaveChoice` 와 같은 길) ③ 사용자 보고 "어두운 테마에서 메모 제목이 안 보인다" — 탭 줄 `ItemContainerStyle` 이 플랫폼 스타일을 대신해 글자색이 검정으로 떨어짐(잉크 차이 116) → 그 스타일에 `ContentForeground`(587). 같은 구조인 파일 비교 문서 탭도 재현(157 · 116)해 같은 한 줄로 고침(546 · 587). 화면 `g8-verify` — 편집기 글자 칸과 칠한 잉크를 px 로 비교: +1~2px(탭 든 줄 · 가로 스크롤 포함) · 문법 색 · 같은 글 5곳/6곳 · 마킹 걸기/풀기/바꾸기/지우기 · 막대 눈금과 누르기 · **Ctrl+Z 가 칠하기로 한 걸음도 안 늘어남** — 밝은 · 어두운 **실패 0**. 사용자가 PC 를 쓰던 동안의 판은 흔들렸다(입력이 섞인 것으로 보이나 확정 못 함). 빌드 경고 0 · 오류 0 | 아래 |
|
||||
|
||||
@ -446,6 +446,9 @@
|
||||
|
||||
| 상태 | 항목 |
|
||||
|---|---|
|
||||
| **완료** | **하단 탭이 따라가지 않는다**(사용자 보고) — 폴더 비교에서 두 번 눌러 파일 비교로 가도 하단 탭이 폴더 비교에 남았다. 원인은 공용 플랫폼 셸(`NavList` 가 `SelectedMainTab` 을 따라가지 않음) — 허락받아 플랫폼에서 고침. 화면 `g10-drop` 선택 [0] → [1] |
|
||||
| **완료** | **Git 탭 끌어다 놓기**(사용자 요청) — 폴더 · 파일을 Git 탭 아무 데나 놓으면 그 저장소(최상위)를 연다. `[폴더...]` 와 같은 규칙(`PathUtil.RepositoryFolderFor`). 하네스 `PathTest` 62 → 68건. 흉내 낸 끌기는 도구 한계로 안 들어가 **사용자가 직접 확인**(로그의 저장소 열기 두 번) |
|
||||
| **완료** | **파일 비교 편집 칸 바탕**(사용자 요청) — 회색이던 칸을 밝음 #FAFAFA · 어두움 #252830 으로(후보를 보고 사용자가 고름). 화면 `g11-pane` 두 테마 화소로 확인 |
|
||||
| **완료** | **작성자가 비면 반영하지 않고 알린다**(사용자 요청) — '반영한 줄에 주석 남기기' 가 켜져 있는데 작성자가 비면 반영 명령 여덟 곳 맨 앞에서 알림 창("작성자를 적어 주세요", 설정 자리를 댐)을 띄우고 멈춘다(사용자 선택). 주석을 끄면 묻지 않는다(늘 켬으로 바꿨다가 사용자 지시로 원복). 미리보기도 대신 채울 이름을 안 보인다. 하네스 `NoteTest` 93 → 99건, 화면 `g9-author` 실패 0 |
|
||||
| **완료** | **설정의 프로그램 정보 칸 · 데모 걷어냄**(사용자 지시) — 만든 사람 · 사내 문의처 칸을 뺐다(개발자 정보가 대신). [정보] 창은 실행 파일 값만, 빈 칸 안내는 `적혀 있지 않습니다`. 데모 설정 두 칸 · [데모 →] 단추 · 전환 코드를 지움. 이 PC 의 시험 재료 13개는 휴지통으로, 설정 · 최근 목록의 시험 경로를 비움. 하네스 `AboutTest` 30건, 화면 `g5` · `g6` 실패 0 |
|
||||
| **완료** | **담당 카드 · 소개 문구 고침**(사용자 지시, 12차 G-6 고침) — 개발자 정보 담당 카드를 `Platform` 최민영 대리 · `MergeHub` 김승준 사원 두 줄로, 사내 문의처는 카드에서만 뺌([정보] 창 · G-5 구조는 그대로). 소개 문구를 **`사내 Merge/Diff + Git 도구`**(Merge 먼저)로 — csproj 설명 · 개발자 정보 · 정보 창 받침 · 창 제목 네 곳. 하네스 `OverviewTest` 고치기 전 4건 실패 → 15건 통과, `AboutTest` 30건, 화면 `g6-verify` · `g5-verify` 실패 0 |
|
||||
|
||||
@ -77,6 +77,23 @@ namespace MergeHub.Services
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Git 탭에서 열 경로 - [폴더...] 로 고른 것이나 탭에 끌어다 놓은 것(2026-09-30 사용자 요청)에 같은 규칙을 쓴다.
|
||||
/// 파일이면 그 파일이 든 폴더, 저장소 안이면 최상위. 저장소가 아니면 그 폴더 그대로 돌려준다 -
|
||||
/// 거기서 [열기] 가 "저장소가 아니다" 라고 알린다(말없이 무시하면 놓은 사람이 무슨 일인지 모른다).
|
||||
/// 없는 경로면 빈 문자열.
|
||||
/// </summary>
|
||||
public static string RepositoryFolderFor(string? path)
|
||||
{
|
||||
var folder = FullFolderPath(path);
|
||||
if (folder.Length == 0) folder = FolderOfFile(path);
|
||||
if (folder.Length == 0) return string.Empty;
|
||||
|
||||
var root = FindRepositoryRoot(folder);
|
||||
return root.Length > 0 ? root : folder;
|
||||
}
|
||||
|
||||
/// <summary>파일 경로가 든 폴더를 정규화해서 돌려준다. 확인할 수 없으면 빈 문자열.</summary>
|
||||
public static string FolderOfFile(string? filePath)
|
||||
{
|
||||
|
||||
44
src/MergeHub/Views/Controls/PaneBackgroundConverter.cs
Normal file
44
src/MergeHub/Views/Controls/PaneBackgroundConverter.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace MergeHub.Views.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// 파일 비교 편집 칸의 바탕 - 밝은 테마 #FAFAFA(부드러운 흰색), 어두운 테마 #252830(짙은 남색). 사용자가 후보를 보고 골랐다(2026-09-30).
|
||||
/// 흰색 · 순검정으로 했다가 "어두운 쪽이 너무 까맣다", "둘 다 보기 편하게" 해서 바꿨다. 어두운 쪽은 페이지(#23262B)와 같은 남색 톤이라 튀지 않는다.
|
||||
///
|
||||
/// <para>
|
||||
/// 예전에는 칸에 바탕이 없어 뒤의 페이지 바탕(밝음 #F2F2F3 · 어두움 #23262B)이 비쳤다 - 둘 다 회색이다.
|
||||
/// 플랫폼 색 토큰에는 흰색/검은색 짝이 없어서, 코드 글자색(<see cref="CodeTextBlock"/>)과 같은 방법으로
|
||||
/// <b>물려받은 글자색의 밝기</b>로 테마를 가린다. 테마를 바꾸면 글자색이 바뀌어 바인딩이 다시 돈다.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public sealed class PaneBackgroundConverter : IValueConverter
|
||||
{
|
||||
public static readonly Brush Light = Freeze(Color.FromRgb(0xFA, 0xFA, 0xFA));
|
||||
public static readonly Brush Dark = Freeze(Color.FromRgb(0x25, 0x28, 0x30));
|
||||
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) =>
|
||||
IsLightText(value as SolidColorBrush) ? Dark : Light;
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) =>
|
||||
throw new NotSupportedException();
|
||||
|
||||
/// <summary>글자색이 밝으면 어두운 테마다. 글자색을 모르면 밝은 테마로 본다.</summary>
|
||||
public static bool IsLightText(SolidColorBrush? brush)
|
||||
{
|
||||
if (brush is null) return false;
|
||||
var c = brush.Color;
|
||||
return (0.299 * c.R + 0.587 * c.G + 0.114 * c.B) / 255.0 > 0.5;
|
||||
}
|
||||
|
||||
private static Brush Freeze(Color color)
|
||||
{
|
||||
var b = new SolidColorBrush(color);
|
||||
b.Freeze();
|
||||
return b;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6,6 +6,7 @@
|
||||
xmlns:local="clr-namespace:MergeHub.Views"
|
||||
xmlns:shell="clr-namespace:UbisamBase.Core.Shell;assembly=UbisamBase.Core"
|
||||
shell:PlatformChrome.FullBleed="True"
|
||||
AllowDrop="True" PreviewDragOver="View_PreviewDragOver" PreviewDrop="View_PreviewDrop"
|
||||
mc:Ignorable="d">
|
||||
<UserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
@ -102,14 +102,46 @@ namespace MergeHub.Views
|
||||
var picked = MergeHub.Services.FolderPicker.Pick("Git 저장소 폴더 고르기", vm.Workspace.RepositoryPath);
|
||||
if (picked is null) return;
|
||||
|
||||
// .git 은 최상위에만 있다. 하위 폴더를 골랐어도 위로 거슬러 올라가 최상위를 연다 -
|
||||
// 사람은 지금 보고 있던 깊은 폴더를 고르기 마련이다.
|
||||
var root = MergeHub.Services.PathUtil.FindRepositoryRoot(picked);
|
||||
vm.Workspace.RepositoryPath = root.Length > 0 ? root : picked;
|
||||
OpenFolder(vm, picked);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 경로 칸에 넣고 [열기]. [폴더...] 와 끌어다 놓기가 같은 길을 탄다.
|
||||
/// .git 은 최상위에만 있다 - 하위 폴더 · 파일을 골랐어도 위로 거슬러 올라가 최상위를 연다(사람은 보던 깊은 곳을 고르기 마련이다).
|
||||
/// </summary>
|
||||
private static void OpenFolder(GitViewModel vm, string path)
|
||||
{
|
||||
var folder = MergeHub.Services.PathUtil.RepositoryFolderFor(path);
|
||||
if (folder.Length == 0) return;
|
||||
|
||||
vm.Workspace.RepositoryPath = folder;
|
||||
if (vm.OpenCommand.CanExecute(null)) vm.OpenCommand.Execute(null);
|
||||
}
|
||||
|
||||
// ================= 끌어다 놓기 (2026-09-30 사용자 요청) =================
|
||||
//
|
||||
// 탐색기에서 폴더(또는 그 안의 파일)를 Git 탭 아무 데나 놓으면 그 저장소를 연다.
|
||||
// Preview 로 받는 까닭 - 커밋 메시지 · 경로 칸 같은 TextBox 는 클래스 처리기가 Drop 을 먼저 먹고
|
||||
// 파일 목록은 버린다(폴더 비교 7차 E-2 에서 겪었다). 파일 놓기만 가로채고 글자 끌어다 놓기는 그대로 둔다.
|
||||
|
||||
private void View_PreviewDragOver(object sender, DragEventArgs e)
|
||||
{
|
||||
if (!e.Data.GetDataPresent(DataFormats.FileDrop)) return;
|
||||
e.Effects = DragDropEffects.Copy;
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void View_PreviewDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
if (!e.Data.GetDataPresent(DataFormats.FileDrop)) return;
|
||||
e.Handled = true;
|
||||
if (ViewModel is not { } vm) return;
|
||||
if (e.Data.GetData(DataFormats.FileDrop) is not string[] { Length: > 0 } paths) return;
|
||||
|
||||
// 여럿을 놓았으면 첫 것만 - 저장소는 한 번에 하나만 열린다.
|
||||
OpenFolder(vm, paths[0]);
|
||||
}
|
||||
|
||||
// PasswordBox 는 보안상 Password 를 바인딩할 수 없어 코드 비하인드로 전달한다.
|
||||
/// <summary>충돌 목록을 두 번 누르면 파일 비교 탭의 3분할에서 연다(6차 B-1). 항목 위가 아니면 무시한다.</summary>
|
||||
private void Conflicts_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
|
||||
@ -48,6 +48,8 @@
|
||||
|
||||
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
|
||||
<ctl:LineHighlightBrushConverter x:Key="HighlightBrush"/>
|
||||
<!-- 편집 칸 바탕: 밝음 #FAFAFA · 어두움 #252830(2026-09-30 사용자 선택). PaneBackgroundConverter 참고. -->
|
||||
<ctl:PaneBackgroundConverter x:Key="PaneBackground"/>
|
||||
<ctl:HighlightNameToBrushConverter x:Key="HighlightByName"/>
|
||||
<ctl:TextToVisibilityConverter x:Key="TextToVis"/>
|
||||
|
||||
@ -1181,7 +1183,8 @@
|
||||
-->
|
||||
<Border Grid.Column="2" Grid.Row="0" BorderThickness="1"
|
||||
Visibility="{Binding IsThreeWay, Converter={StaticResource BoolToVis}}"
|
||||
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}">
|
||||
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
||||
Background="{Binding (TextElement.Foreground), RelativeSource={RelativeSource Self}, Converter={StaticResource PaneBackground}}">
|
||||
<!-- 칸 밖으로 그려지지 않게 자른다. 표시층은 RenderTransform 으로 살짝 밀어 놓는데,
|
||||
그건 배치가 아니라 그리기라 자르지 않으면 <b>아래 상태바 위에 코드가 겹쳐 그려진다.</b>
|
||||
차이로 이동(Alt+↑↓)할 때 실제로 그렇게 보였다. -->
|
||||
@ -1260,7 +1263,8 @@
|
||||
|
||||
<!-- ② BASE -->
|
||||
<Border Grid.Row="0" BorderThickness="1"
|
||||
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}">
|
||||
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
||||
Background="{Binding (TextElement.Foreground), RelativeSource={RelativeSource Self}, Converter={StaticResource PaneBackground}}">
|
||||
<Border.Style>
|
||||
<Style TargetType="Border">
|
||||
<!-- 2-Way: 왼쪽 칸. 3-Way: 가운데 칸(LOCAL 과 REMOTE 사이가 공통 조상의 자리다). -->
|
||||
@ -1366,7 +1370,8 @@
|
||||
폭 전체를 쓰고, 위 세 칸(LOCAL 원본 · BASE · REMOTE)은 읽기 전용 참고가 된다.
|
||||
-->
|
||||
<Border BorderThickness="1"
|
||||
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}">
|
||||
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
||||
Background="{Binding (TextElement.Foreground), RelativeSource={RelativeSource Self}, Converter={StaticResource PaneBackground}}">
|
||||
<Border.Style>
|
||||
<Style TargetType="Border">
|
||||
<Setter Property="Grid.Row" Value="0"/>
|
||||
@ -1571,7 +1576,8 @@
|
||||
-->
|
||||
<Border Grid.Column="6" Grid.Row="0" BorderThickness="1"
|
||||
Visibility="{Binding IsThreeWay, Converter={StaticResource BoolToVis}}"
|
||||
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}">
|
||||
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
||||
Background="{Binding (TextElement.Foreground), RelativeSource={RelativeSource Self}, Converter={StaticResource PaneBackground}}">
|
||||
<!-- 칸 밖으로 그려지지 않게 자른다. 표시층은 RenderTransform 으로 살짝 밀어 놓는데,
|
||||
그건 배치가 아니라 그리기라 자르지 않으면 <b>아래 상태바 위에 코드가 겹쳐 그려진다.</b>
|
||||
차이로 이동(Alt+↑↓)할 때 실제로 그렇게 보였다. -->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user