diff --git a/src/Avalonia.Diagnostics/DevTools.xaml.cs b/src/Avalonia.Diagnostics/DevTools.xaml.cs index cc3c545d84..ddd3e29e43 100644 --- a/src/Avalonia.Diagnostics/DevTools.xaml.cs +++ b/src/Avalonia.Diagnostics/DevTools.xaml.cs @@ -21,7 +21,12 @@ namespace Avalonia { public static void AttachDevTools(this TopLevel control) { - Diagnostics.DevTools.Attach(control); + Diagnostics.DevTools.Attach(control, new KeyGesture(Key.F12)); + } + + public static void AttachDevTools(this TopLevel control, KeyGesture gesture) + { + Diagnostics.DevTools.Attach(control, gesture); } } } @@ -52,42 +57,45 @@ namespace Avalonia.Diagnostics public IControl Root { get; } - public static IDisposable Attach(TopLevel control) + public static IDisposable Attach(TopLevel control, KeyGesture gesture) { + void PreviewKeyDown(object sender, KeyEventArgs e) + { + if (gesture.Matches(e)) + { + OpenDevTools(control); + } + } + return control.AddHandler( KeyDownEvent, - WindowPreviewKeyDown, + PreviewKeyDown, RoutingStrategies.Tunnel); } - private static void WindowPreviewKeyDown(object sender, KeyEventArgs e) + private static void OpenDevTools(TopLevel control) { - if (e.Key == Key.F12) + if (s_open.TryGetValue(control, out var devToolsWindow)) + { + devToolsWindow.Activate(); + } + else { - var control = (TopLevel)sender; + var devTools = new DevTools(control); - if (s_open.TryGetValue(control, out var devToolsWindow)) + devToolsWindow = new Window { - devToolsWindow.Activate(); - } - else - { - var devTools = new DevTools(control); - - devToolsWindow = new Window - { - Width = 1024, - Height = 512, - Content = devTools, - DataTemplates = { new ViewLocator() }, - Title = "Avalonia DevTools" - }; - - devToolsWindow.Closed += devTools.DevToolsClosed; - s_open.Add(control, devToolsWindow); - MarkAsDevTool(devToolsWindow); - devToolsWindow.Show(); - } + Width = 1024, + Height = 512, + Content = devTools, + DataTemplates = { new ViewLocator() }, + Title = "Avalonia DevTools" + }; + + devToolsWindow.Closed += devTools.DevToolsClosed; + s_open.Add(control, devToolsWindow); + MarkAsDevTool(devToolsWindow); + devToolsWindow.Show(); } }