페이지 배경색 기본 표시를 White → Control 로 (레거시 PropertyGrid 와 일치)
페이지 루트에 BackColor 가 없을 때 내가 임의로 'White' 를 지어내 보여 주고 있었다.
페이지 루트는 WinForms UserControl 이고 그 BackColor 기본값은 SystemColors.Control 이라
레거시 PropertyGrid 는 'Control' 을 표시한다 — 사용자가 짚은 그대로다.
근거를 위해 --db-pageprops 진단을 신설해 전수 집계했다(디자인 1,271건 / 페이지 1,816장).
BackColor White 1,487장(81.9%) · (없음) 230장(12.7%) · Window 91장(5.0%)
ButtonHighlight/ControlLightLight/MenuBar/Control/ControlLight 8장
Font (없음) 95.6% — 없을 때 굴림 9pt 로 보이는 현행 기본값이 맞다
기타 키 Margin 9장, BorderStyle 6장, DoNotPrintThisPage 2장 …
12.7% 는 예외가 아니라 흔한 경우다. 표시만 고치고 저장은 하지 않는다 — 지어낸 값이 XML 에
새로 생기면 왕복 diff 0 이 조용히 깨진다. 이 규약을 두 겹으로 못 박았다.
- 편집 스모크: 값 없는 페이지에서 Control 표시 / 미저장 / 용지는 흰색
- --db-pageprops: BackColor 없는 실제 서식 40건을 열어 XML 이 그대로인지 대조
렌더는 흰색을 유지한다. 사용자 확인 결과 레거시 실행 시에도 흰색으로 나오고,
#F0F0F0 종이는 라이트 테마 캔버스 배경(#D8D8D8)과 1.13:1 이라 용지 경계가 사라진다.
대신 값이 없을 때는 라벨 툴팁으로 '저장된 값 없음 / 실행·인쇄는 흰색 / 바꾸면 그때 저장'을
알린다 — 안 그러면 "Control 인데 왜 희게 보이지?" 로 다시 읽힌다.
부수: PropertyRowViewModel 에 Hint 를 추가하고 색상 행 라벨 툴팁에 배선.
회귀: 테스트 124/124, 편집 스모크 실패 0, DB 왕복 1,271건 diff 0/예외 0,
종이 렌더 P062 바이트 동일.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
38093691ad
commit
ac36f93a03
@@ -504,7 +504,8 @@ public static class EditSmoke
|
||||
Check("페이지 속성: 저장 XML 의 Size 가 편집값", pageXml.Contains("794, 1123"),
|
||||
"Size 가 Bounds 와 어긋남");
|
||||
|
||||
// 배경색
|
||||
// 배경색 — 값이 없으면 레거시 PropertyGrid 와 같은 기본값(Control)을 보여 주되
|
||||
// 저장하지는 않는다. 지어낸 값이 XML 에 새로 생기면 왕복 diff 0 이 깨진다.
|
||||
var colorRow = pg.Inspector.Rows.OfType<ViewModels.Inspector.ColorRowViewModel>()
|
||||
.FirstOrDefault(r => r.Label == "배경색");
|
||||
Check("페이지 속성: 배경색 행 존재", colorRow is not null);
|
||||
@@ -515,6 +516,22 @@ public static class EditSmoke
|
||||
pg.Pages[0].Model.Root.Props.GetText("BackColor") == "Silver");
|
||||
}
|
||||
|
||||
// 값이 없는 페이지: 기본값 표시 + 미저장
|
||||
{
|
||||
var bare = new DesignerViewModel(business.CreateNew());
|
||||
bare.Pages[0].Model.Root.Props.Remove("BackColor");
|
||||
bare.ActivatePage(bare.Pages[0]);
|
||||
var bareRow = bare.Inspector.Rows.OfType<ViewModels.Inspector.ColorRowViewModel>()
|
||||
.FirstOrDefault(r => r.Label == "배경색");
|
||||
Check("페이지 속성: 값 없으면 Control 로 표시",
|
||||
bareRow?.ValueText == "Control", $"실제 {bareRow?.ValueText}");
|
||||
Check("페이지 속성: 값 없으면 설명 표시", bareRow?.Hint is not null);
|
||||
Check("페이지 속성: 표시만 하고 저장하지 않음",
|
||||
bare.Pages[0].Model.Root.Props.GetText("BackColor") is null);
|
||||
Check("페이지 속성: 값 없어도 용지는 흰색",
|
||||
bare.Pages[0].PaperBrush is System.Windows.Media.SolidColorBrush { Color.R: 255, Color.G: 255, Color.B: 255 });
|
||||
}
|
||||
|
||||
// 기본 글꼴 — 명시 Font 가 없는 컨트롤이 상속한다
|
||||
var fontRow = pg.Inspector.Rows.OfType<ViewModels.Inspector.TextRowViewModel>()
|
||||
.FirstOrDefault(r => r.Label == "글꼴");
|
||||
|
||||
Reference in New Issue
Block a user