diff --git a/src/SheetMe.Designer/Diagnostics/EditSmoke.cs b/src/SheetMe.Designer/Diagnostics/EditSmoke.cs index dab4990..3306400 100644 --- a/src/SheetMe.Designer/Diagnostics/EditSmoke.cs +++ b/src/SheetMe.Designer/Diagnostics/EditSmoke.cs @@ -340,6 +340,30 @@ public static class EditSmoke // 인쇄 필터가 캔버스로 새면 안 된다 — 편집 중인 것을 못 보면 고칠 수 없다 Check("미리보기: 캔버스는 자식을 그대로 다 보여 준다", boxedPanel.Children.Count == 3, $"{boxedPanel.Children.Count} (기대 3)"); + + // 창이 편집을 따라오는가. + // 전에는 생성자에서 한 번만 그려서, 컨트롤을 추가·삭제해도 옛 그림을 계속 보여 줬다 — + // 저장 전에 결과를 확인하려고 여는 창이 구조적으로 거짓말을 하고 있었다. + var live = new Views.PreviewWindow(boxedVm) + { + Left = -10000, Top = -10000, + WindowStartupLocation = WindowStartupLocation.Manual, + ShowActivated = false, ShowInTaskbar = false, + }; + live.Show(); + // 레이아웃을 돌리고 센다 — 재빌드 직후에는 새 자식이 아직 실체화되지 않아 + // 요소 수가 오히려 줄어 보인다(실제로 52 → 41 로 걸렸다). 세 번째 같은 함정이다. + int Pages() + { + live.UpdateLayout(); + return CountVisuals(live); + } + var livePages = Pages(); + boxedVm.AddControlAt("Label", new Point(300, 400)); + var liveAfterAdd = Pages(); + Check("미리보기: 컨트롤을 추가하면 창이 따라온다", liveAfterAdd > livePages, + $"요소 {livePages} → {liveAfterAdd} (안 늘면 생성자에서 한 번만 그린 것)"); + live.Close(); } // 2) 클릭 선택 — 컨트롤 중심(핸들 반경 밖) diff --git a/src/SheetMe.Designer/ViewModels/MainViewModel.cs b/src/SheetMe.Designer/ViewModels/MainViewModel.cs index e4c60f8..faf7696 100644 --- a/src/SheetMe.Designer/ViewModels/MainViewModel.cs +++ b/src/SheetMe.Designer/ViewModels/MainViewModel.cs @@ -970,10 +970,9 @@ internal sealed class MainViewModel : ViewModelBase { return; } - new Views.PreviewWindow(CurrentDesigner) - { - Owner = Application.Current.MainWindow, - }.Show(); + // 창은 하나만 뜬다 — 여러 장이 겹치면 각각 다른 시점의 서식을 들고 있게 되고, + // 환자 데이터가 들어가면 옛 창이 옛 환자를 계속 띄운다. + Views.PreviewWindow.ShowFor(CurrentDesigner, Application.Current.MainWindow); } private void OnPrint() diff --git a/src/SheetMe.Designer/Views/PreviewWindow.xaml b/src/SheetMe.Designer/Views/PreviewWindow.xaml index cd90969..d17d2c2 100644 --- a/src/SheetMe.Designer/Views/PreviewWindow.xaml +++ b/src/SheetMe.Designer/Views/PreviewWindow.xaml @@ -8,6 +8,8 @@