diff --git a/samples/ControlCatalog/MainWindow.xaml.cs b/samples/ControlCatalog/MainWindow.xaml.cs index c786900deb..413794dfa2 100644 --- a/samples/ControlCatalog/MainWindow.xaml.cs +++ b/samples/ControlCatalog/MainWindow.xaml.cs @@ -10,7 +10,7 @@ namespace ControlCatalog { this.InitializeComponent(); this.AttachDevTools(); - //Renderer.DrawDirtyRects = Renderer.DrawFps = true; + Renderer.DrawDirtyRects = Renderer.DrawFps = true; } private void InitializeComponent() diff --git a/src/Avalonia.Visuals/Rendering/DirtyVisuals.cs b/src/Avalonia.Visuals/Rendering/DirtyVisuals.cs index 3eddb7e94d..8e00edf1d0 100644 --- a/src/Avalonia.Visuals/Rendering/DirtyVisuals.cs +++ b/src/Avalonia.Visuals/Rendering/DirtyVisuals.cs @@ -14,7 +14,7 @@ namespace Avalonia.Rendering public void Add(IVisual visual) { - var distance = visual.CalculateDistanceFromVisualRoot(); + var distance = visual.IsAttachedToVisualTree ? visual.CalculateDistanceFromVisualRoot() : -1; int existingDistance; if (_index.TryGetValue(visual, out existingDistance)) @@ -46,6 +46,20 @@ namespace Avalonia.Rendering _index.Clear(); } + public bool Remove(IVisual visual) + { + int distance; + + if (_index.TryGetValue(visual, out distance)) + { + _inner[distance].Remove(visual); + _index.Remove(visual); + return true; + } + + return false; + } + public IEnumerator GetEnumerator() { foreach (var i in _inner)