From 6ce055b00cc4f5ff96aacdea70c26cff2aaa5f59 Mon Sep 17 00:00:00 2001 From: Msystech Date: Thu, 13 Aug 2026 17:14:55 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20=ED=8E=B8=EC=A7=91?= =?UTF-8?q?=EA=B8=B0=20=E2=80=94=20=EB=A0=8C=EB=8D=94=EB=A5=BC=20=EB=AA=A9?= =?UTF-8?q?=EC=97=85=EA=B3=BC=20=ED=94=BD=EC=85=80=20=EB=8C=80=EC=A1=B0?= =?UTF-8?q?=ED=95=B4=20=EC=B0=BE=EC=9D=80=2011=EA=B1=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 목업 사양을 글로 옮긴 뒤, 라이트·다크 렌더 4장과 XAML 을 각각 다른 눈으로 대조하고 그 지적을 다시 반증하는 감사를 돌렸다. 확정된 것만 고쳤다. 대부분 '내가 지정한 색이 전역 스타일에 먹히고 있었다'는 한 가지 뿌리에서 나왔다. ■ 글자색이 지정한 대로 안 나오던 것 (가장 컸다) '포맷'·'전체 지우기'·'닫기'·+ 가 전부 본문색이었다. 라이트 '전체 지우기' 영역 히스토그램에 파란 픽셀이 0개였다. 원인은 전역 TextBlock 스타일(Foreground=B.Ink)이 ContentPresenter 가 만든 글자에 직접 걸려 Button.Foreground 상속을 이기는 것. 공유 버튼 템플릿이 이미 쓰던 방어(ContentPresenter.Resources 로 TextBlock Foreground 를 버튼에 바인딩)를 툴바·칩 템플릿에도 넣었다. 같은 이유로 파란 채움 칩 '전체' 위 글자가 검정이었다 — 채움도 B.Accent(#0099FF, 흰 글자 3.0:1)에서 B.AccentFill(#0F6FBF, 5.19:1)로 바꿔 양 테마가 함께 해결된다. ■ 사각 편집 상자 안에 파란 둥근 상자가 겹쳐 있던 것 전역 TextBox 템플릿이 BorderThickness=1·CornerRadius=8 을 하드코딩하고 포커스 시 그 테두리를 강조색으로 칠한다. SqlBox 의 BorderThickness=0 은 무시된다. y=300 가로 스캔에서 구분선(#DCDCDC) 바로 옆 x=59 가 #0099FF 였고, 세로로 훑으면 반경 8 의 호를 그렸다. 사용자가 지적한 '줄칸과 입력칸 사이 선의 라운드'가 이것이었다 — 무테 템플릿(ChipTextBox)으로 바꿨다. ■ 다크에서만 사라지던 것 3가지 · 줄번호 홈통: B.Input 과 B.Chip 이 둘 다 #262626 이라 면이 갈라지지 않았다(1px 선만 남음). 편집 영역 배경을 B.Surface(#1C1C1C)로 바꿔 홈통이 드러나게 했다. · 결과/상태 상자와 카드 경계: B.InputBorder 가 다크에서 Transparent 라 테두리 픽셀이 0개였다. B.Line2 로 바꿨다. · 현재 줄 띠: B.Hover(#242424)가 편집 배경(#262626)보다 오히려 어두워 1.02:1 이었다. 편집기 전용 토큰 B.SqlCurrentLine 을 양 테마에 신설했다(다른 화면의 호버 룩은 그대로). · 선택된 변수 행: B.Sel 이 다크에서 #3C3C3C 중성 회색이라 '옅은 파랑'이 아니었다. 공유 토큰은 두고 이 목록에만 B.LayerSubtree 를 준다. ■ 그 밖 · 카드에 그림자가 0px 이었다 — B.CardShadow 를 신설했다(기존 B.FloatShadow 는 팔레트용이라 세다). · 카드 사이 GridSplitter 의 회색 띠가 목업에 없는 선으로 보였다 — 투명으로. · 결과 표: 마지막 컬럼 뒤 채움 머리글이 회색이라 이름 없는 컬럼처럼 보였다(Column=null DataTrigger 로 처리). · 결과 표: 본문 글자가 머리글보다 8px 왼쪽으로 밀려 있었다 — DataGridCell 기본 템플릿이 Padding 을 쓰지 않아서다. 템플릿을 지정해 여백이 먹게 했다. 회귀: 테스트 230/230, 편집 스모크 실패 0, 팝업·정렬·결과표·단축키 점검 16/16, 종이 렌더 P062 바이트 동일. Co-Authored-By: Claude Opus 5 --- .../Controls/SqlHighlightLayer.cs | 2 +- src/SheetMe.Designer/Themes/Tokens.Dark.xaml | 3 + src/SheetMe.Designer/Themes/Tokens.Light.xaml | 4 + .../Views/QueryEditorWindow.xaml | 89 ++++++++++++++++--- 4 files changed, 85 insertions(+), 13 deletions(-) diff --git a/src/SheetMe.Designer/Controls/SqlHighlightLayer.cs b/src/SheetMe.Designer/Controls/SqlHighlightLayer.cs index acaa935..1ebc59f 100644 --- a/src/SheetMe.Designer/Controls/SqlHighlightLayer.cs +++ b/src/SheetMe.Designer/Controls/SqlHighlightLayer.cs @@ -150,7 +150,7 @@ public sealed class SqlHighlightLayer : FrameworkElement // 커서가 있는 줄 — 긴 쿼리에서 지금 어디를 고치고 있는지 잃지 않게 옅은 띠를 깐다. // 위치는 TextBox 에게 묻는다(아래 이유와 같다). - if (source.SelectionLength == 0 && TryFindResource("B.Hover") is Brush band) + if (source.SelectionLength == 0 && TryFindResource("B.SqlCurrentLine") is Brush band) { var caretRect = RectAt(source.CaretIndex); if (caretRect is { } cr && cr.Bottom >= 0 && cr.Top <= height) diff --git a/src/SheetMe.Designer/Themes/Tokens.Dark.xaml b/src/SheetMe.Designer/Themes/Tokens.Dark.xaml index 09ecad2..1de825b 100644 --- a/src/SheetMe.Designer/Themes/Tokens.Dark.xaml +++ b/src/SheetMe.Designer/Themes/Tokens.Dark.xaml @@ -56,6 +56,9 @@ + + + diff --git a/src/SheetMe.Designer/Themes/Tokens.Light.xaml b/src/SheetMe.Designer/Themes/Tokens.Light.xaml index c851138..b355c41 100644 --- a/src/SheetMe.Designer/Themes/Tokens.Light.xaml +++ b/src/SheetMe.Designer/Themes/Tokens.Light.xaml @@ -91,6 +91,10 @@ + + + + diff --git a/src/SheetMe.Designer/Views/QueryEditorWindow.xaml b/src/SheetMe.Designer/Views/QueryEditorWindow.xaml index 914f976..ab20785 100644 --- a/src/SheetMe.Designer/Views/QueryEditorWindow.xaml +++ b/src/SheetMe.Designer/Views/QueryEditorWindow.xaml @@ -13,8 +13,10 @@ + + @@ -61,7 +72,16 @@ + HorizontalAlignment="Center" VerticalAlignment="Center"> + + + + + @@ -103,22 +123,54 @@ + + + + + + + + + + + + - - + + + @@ -224,7 +284,7 @@ 결과가 닫혀 있어도 상태 줄은 남아야 하므로 상자 자체는 항상 보인다. --> + BorderBrush="{DynamicResource B.Line2}" Background="{DynamicResource B.Surface}"> + + BorderBrush="{DynamicResource B.Line2}" Background="{DynamicResource B.Surface}"> @@ -302,7 +364,10 @@ - + - + @@ -364,7 +429,7 @@ -