Browse Source

Merge pull request #2818 from AvaloniaUI/fixes/1641-devtools-hotkey

Allow specifying DevTools key gesture.
pull/2827/head
Steven Kirk 7 years ago
committed by GitHub
parent
commit
6ff367c25b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 62
      src/Avalonia.Diagnostics/DevTools.xaml.cs

62
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<ViewModelBase>() },
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<ViewModelBase>() },
Title = "Avalonia DevTools"
};
devToolsWindow.Closed += devTools.DevToolsClosed;
s_open.Add(control, devToolsWindow);
MarkAsDevTool(devToolsWindow);
devToolsWindow.Show();
}
}

Loading…
Cancel
Save