From c4ebf899e50f079be187c227cfba61c4c9d70ae9 Mon Sep 17 00:00:00 2001 From: Luis von der Eltz Date: Thu, 3 Sep 2020 15:05:28 +0200 Subject: [PATCH 1/2] Add option to enable/disable dirty rects --- .../Diagnostics/ViewModels/MainViewModel.cs | 27 ++++++++++++++----- .../Diagnostics/Views/MainView.xaml | 7 +++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs index 1c49b24f52..1bd4d711ab 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs @@ -9,7 +9,7 @@ namespace Avalonia.Diagnostics.ViewModels { internal class MainViewModel : ViewModelBase, IDisposable { - private readonly IControl _root; + private readonly TopLevel _root; private readonly TreePageViewModel _logicalTree; private readonly TreePageViewModel _visualTree; private readonly EventsPageViewModel _events; @@ -19,8 +19,9 @@ namespace Avalonia.Diagnostics.ViewModels private string _focusedControl; private string _pointerOverElement; private bool _shouldVisualizeMarginPadding = true; + private bool _shouldVisualizeDirtyRects; - public MainViewModel(IControl root) + public MainViewModel(TopLevel root) { _root = root; _logicalTree = new TreePageViewModel(this, LogicalTreeNode.Create(root)); @@ -40,6 +41,22 @@ namespace Avalonia.Diagnostics.ViewModels get => _shouldVisualizeMarginPadding; set => RaiseAndSetIfChanged(ref _shouldVisualizeMarginPadding, value); } + + public bool ShouldVisualizeDirtyRects + { + get => _shouldVisualizeDirtyRects; + set + { + RaiseAndSetIfChanged(ref _shouldVisualizeDirtyRects, value); + + _root.Renderer.DrawDirtyRects = value; + } + } + + public void ToggleVisualizeDirtyRects() + { + ShouldVisualizeDirtyRects = !ShouldVisualizeDirtyRects; + } public void ToggleVisualizeMarginPadding() { @@ -128,10 +145,7 @@ namespace Avalonia.Diagnostics.ViewModels { var tree = Content as TreePageViewModel; - if (tree != null) - { - tree.SelectControl(control); - } + tree?.SelectControl(control); } public void Dispose() @@ -140,6 +154,7 @@ namespace Avalonia.Diagnostics.ViewModels _pointerOverSubscription.Dispose(); _logicalTree.Dispose(); _visualTree.Dispose(); + _root.Renderer.DrawDirtyRects = false; } private void UpdateFocusedControl() diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml b/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml index 0165398718..e0b73957bf 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml @@ -24,6 +24,13 @@ IsEnabled="False"/> + + + + + From 2bd8156fae206d321a446836e1ce33b45caca931 Mon Sep 17 00:00:00 2001 From: Luis von der Eltz Date: Thu, 3 Sep 2020 16:28:29 +0200 Subject: [PATCH 2/2] Also add option to show fps overlay --- .../Diagnostics/ViewModels/MainViewModel.cs | 20 +++++++++++++++++-- .../Diagnostics/Views/MainView.xaml | 7 +++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs index 1bd4d711ab..bf7d0e232a 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs @@ -20,6 +20,7 @@ namespace Avalonia.Diagnostics.ViewModels private string _pointerOverElement; private bool _shouldVisualizeMarginPadding = true; private bool _shouldVisualizeDirtyRects; + private bool _showFpsOverlay; public MainViewModel(TopLevel root) { @@ -47,9 +48,8 @@ namespace Avalonia.Diagnostics.ViewModels get => _shouldVisualizeDirtyRects; set { - RaiseAndSetIfChanged(ref _shouldVisualizeDirtyRects, value); - _root.Renderer.DrawDirtyRects = value; + RaiseAndSetIfChanged(ref _shouldVisualizeDirtyRects, value); } } @@ -63,6 +63,21 @@ namespace Avalonia.Diagnostics.ViewModels ShouldVisualizeMarginPadding = !ShouldVisualizeMarginPadding; } + public bool ShowFpsOverlay + { + get => _showFpsOverlay; + set + { + _root.Renderer.DrawFps = value; + RaiseAndSetIfChanged(ref _showFpsOverlay, value); + } + } + + public void ToggleFpsOverlay() + { + ShowFpsOverlay = !ShowFpsOverlay; + } + public ConsoleViewModel Console { get; } public ViewModelBase Content @@ -155,6 +170,7 @@ namespace Avalonia.Diagnostics.ViewModels _logicalTree.Dispose(); _visualTree.Dispose(); _root.Renderer.DrawDirtyRects = false; + _root.Renderer.DrawFps = false; } private void UpdateFocusedControl() diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml b/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml index e0b73957bf..8c4db33f91 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml @@ -31,6 +31,13 @@ IsEnabled="False"/> + + + + +