Browse Source

Allow specifying DevTools key gesture.

Fixes #1641
pull/2818/head
Steven Kirk 7 years ago
parent
commit
c682dde63a
  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) 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 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( return control.AddHandler(
KeyDownEvent, KeyDownEvent,
WindowPreviewKeyDown, PreviewKeyDown,
RoutingStrategies.Tunnel); 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(); Width = 1024,
} Height = 512,
else Content = devTools,
{ DataTemplates = { new ViewLocator<ViewModelBase>() },
var devTools = new DevTools(control); Title = "Avalonia DevTools"
};
devToolsWindow = new Window
{ devToolsWindow.Closed += devTools.DevToolsClosed;
Width = 1024, s_open.Add(control, devToolsWindow);
Height = 512, MarkAsDevTool(devToolsWindow);
Content = devTools, devToolsWindow.Show();
DataTemplates = { new ViewLocator<ViewModelBase>() },
Title = "Avalonia DevTools"
};
devToolsWindow.Closed += devTools.DevToolsClosed;
s_open.Add(control, devToolsWindow);
MarkAsDevTool(devToolsWindow);
devToolsWindow.Show();
}
} }
} }

Loading…
Cancel
Save