Browse Source

feat(DevTools): Open DevTools with Focused Element Automatically Selected in Tree

pull/7891/head
Giuseppe Lippolis 4 years ago
parent
commit
1f5560a8a8
  1. 8
      src/Avalonia.Diagnostics/Diagnostics/DevTools.cs
  2. 10
      src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs

8
src/Avalonia.Diagnostics/Diagnostics/DevTools.cs

@ -105,13 +105,15 @@ namespace Avalonia.Diagnostics
private static IDisposable Open(Application? application, DevToolsOptions options, Window? owner = default)
{
var focussedControl = KeyboardDevice.Instance?.FocusedElement as IControl;
if (application is null)
{
throw new ArgumentNullException(nameof(application));
}
if (s_open.TryGetValue(application, out var window))
{
{
window.Activate();
window.SelectedControl(focussedControl);
}
else
{
@ -122,7 +124,7 @@ namespace Avalonia.Diagnostics
Height = options.Size.Height,
};
window.SetOptions(options);
window.SelectedControl(focussedControl);
window.Closed += DevToolsClosed;
s_open.Add(application, window);
if (options.ShowAsChildWindow && owner is { })
@ -133,7 +135,7 @@ namespace Avalonia.Diagnostics
{
window.Show();
}
}
}
return Disposable.Create(() => window?.Close());
}
}

10
src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs

@ -110,7 +110,7 @@ namespace Avalonia.Diagnostics.Views
{
#pragma warning disable CS0618 // Type or member is obsolete
var point = (topLevel as IInputRoot)?.MouseDevice?.GetPosition(topLevel) ?? default;
#pragma warning restore CS0618 // Type or member is obsolete
#pragma warning restore CS0618 // Type or member is obsolete
return (IControl?)topLevel.GetVisualsAt(point, x =>
{
@ -255,5 +255,13 @@ namespace Avalonia.Diagnostics.Views
}
}
}
internal void SelectedControl(IControl? control)
{
if (control is { })
{
(DataContext as MainViewModel)?.SelectControl(control);
}
}
}
}

Loading…
Cancel
Save