From 92cd1932378a1e26b82d7bda074e20eef95fff47 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Sat, 29 May 2021 02:25:46 -0400 Subject: [PATCH] Improve setters filter --- .../ViewModels/ControlDetailsViewModel.cs | 21 +++---------------- .../ViewModels/TreePageViewModel.cs | 13 ++++++------ .../Diagnostics/Views/ControlDetailsView.xaml | 8 ++++++- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs index 6d0345d6e0..b1ff8ae98d 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs @@ -19,7 +19,6 @@ namespace Avalonia.Diagnostics.ViewModels private readonly IVisual _control; private readonly IDictionary> _propertyIndex; private AvaloniaPropertyViewModel _selectedProperty; - private string _styleFilter; private bool _snapshotStyles; private bool _showInactiveStyles; private string _styleStatus; @@ -144,12 +143,6 @@ namespace Avalonia.Diagnostics.ViewModels set => RaiseAndSetIfChanged(ref _selectedProperty, value); } - public string StyleFilter - { - get => _styleFilter; - set => RaiseAndSetIfChanged(ref _styleFilter, value); - } - public bool SnapshotStyles { get => _snapshotStyles; @@ -174,11 +167,7 @@ namespace Avalonia.Diagnostics.ViewModels { base.OnPropertyChanged(e); - if (e.PropertyName == nameof(StyleFilter)) - { - UpdateStyleFilters(); - } - else if (e.PropertyName == nameof(SnapshotStyles)) + if (e.PropertyName == nameof(SnapshotStyles)) { if (!SnapshotStyles) { @@ -187,19 +176,15 @@ namespace Avalonia.Diagnostics.ViewModels } } - private void UpdateStyleFilters() + public void UpdateStyleFilters() { - var filter = StyleFilter; - bool hasFilter = !string.IsNullOrEmpty(filter); - foreach (var style in AppliedStyles) { var hasVisibleSetter = false; foreach (var setter in style.Setters) { - setter.IsVisible = - !hasFilter || setter.Name.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0; + setter.IsVisible = TreePage.SettersFilter.Filter(setter.Name); hasVisibleSetter |= setter.IsVisible; } diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/TreePageViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/TreePageViewModel.cs index 28df4d06f0..85a7cb69a3 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/TreePageViewModel.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/TreePageViewModel.cs @@ -16,12 +16,17 @@ namespace Avalonia.Diagnostics.ViewModels PropertiesFilter = new FilterViewModel(); PropertiesFilter.RefreshFilter += (s, e) => Details?.PropertiesView.Refresh(); + + SettersFilter = new FilterViewModel(); + SettersFilter.RefreshFilter += (s, e) => Details?.UpdateStyleFilters(); } public MainViewModel MainView { get; } public FilterViewModel PropertiesFilter { get; } + public FilterViewModel SettersFilter { get; } + public TreeNode[] Nodes { get; protected set; } public TreeNode SelectedNode @@ -29,18 +34,12 @@ namespace Avalonia.Diagnostics.ViewModels get => _selectedNode; private set { - var oldDetails = Details; - if (RaiseAndSetIfChanged(ref _selectedNode, value)) { Details = value != null ? new ControlDetailsViewModel(this, value.Visual) : null; - - if (Details != null && oldDetails != null) - { - Details.StyleFilter = oldDetails.StyleFilter; - } + Details?.UpdateStyleFilters(); } } } diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml b/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml index e6e19643a2..4b37438993 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml @@ -67,7 +67,13 @@ - +