diff --git a/src/SheetMe.Designer/Diagnostics/DbSmoke.cs b/src/SheetMe.Designer/Diagnostics/DbSmoke.cs index 042a465..05598ed 100644 --- a/src/SheetMe.Designer/Diagnostics/DbSmoke.cs +++ b/src/SheetMe.Designer/Diagnostics/DbSmoke.cs @@ -744,6 +744,29 @@ public static class DbSmoke Check("결과 표에 열이 생긴다", grid.Columns.Count >= 2, $"열 {grid.Columns.Count}개"); Check("결과 표에 행이 채워진다", grid.Items.Count >= 1, $"행 {grid.Items.Count}개"); + // ⑩ 검증 실행 단축키가 실제로 배선돼 있는가. + // 합성 키 이벤트로는 Keyboard.Modifiers 가 잡히지 않으므로(실제 키 상태를 읽는다) + // 선언된 KeyBinding 을 찾아 그 명령을 직접 실행해 확인한다. + var bindings = window.InputBindings.OfType().ToList(); + var ctrlEnter = bindings.FirstOrDefault(b => + b.Key == System.Windows.Input.Key.Return + && b.Modifiers == System.Windows.Input.ModifierKeys.Control); + var f5 = bindings.FirstOrDefault(b => b.Key == System.Windows.Input.Key.F5); + Check("Ctrl+Enter 단축키가 등록돼 있다", ctrlEnter is not null); + Check("F5 단축키도 남아 있다", f5 is not null); + + if (ctrlEnter?.Command is { } trialCommand) + { + pane.Visibility = System.Windows.Visibility.Collapsed; + Type("SELECT 1 FROM DUAL WHERE 1=1 AND SEL"); + var popupWasOpen = popup.IsOpen; + trialCommand.Execute(null); + DrainDispatcher(); + Check("Ctrl+Enter 로 검증이 실행된다", pane.Visibility == System.Windows.Visibility.Visible); + // 목록이 떠 있어도 검증이 돈다 — Enter(목록 확정)와 뜻이 갈려야 한다 + Check("실행하면서 자동완성 목록을 닫는다", popupWasOpen && !popup.IsOpen); + } + window.Close(); DrainDispatcher(); } diff --git a/src/SheetMe.Designer/Views/QueryEditorWindow.xaml b/src/SheetMe.Designer/Views/QueryEditorWindow.xaml index 0b1c95e..457b05a 100644 --- a/src/SheetMe.Designer/Views/QueryEditorWindow.xaml +++ b/src/SheetMe.Designer/Views/QueryEditorWindow.xaml @@ -61,6 +61,13 @@ + + + + + + @@ -82,7 +89,7 @@ TextTrimming="CharacterEllipsis"/>