From 99efcfed7ff10d4bfbde29b30b12ac3747f0c1f9 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 17 Jun 2017 19:29:59 +0200 Subject: [PATCH] Make BoundsTracker work with deferred renderer. This needs to be redone: see #1026. --- .../Rendering/SceneGraph/SceneBuilder.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs index 720993b31a..fa80845cfd 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs @@ -199,6 +199,12 @@ namespace Avalonia.Rendering.SceneGraph } catch { } + if (visual is Visual) + { + var transformed = new TransformedBounds(new Rect(visual.Bounds.Size), clip, node.Transform); + BoundsTracker.SetTransformedBounds((Visual)visual, transformed); + } + if (forceRecurse) { foreach (var child in visual.VisualChildren.OrderBy(x => x, ZIndexComparer.Instance)) @@ -263,12 +269,16 @@ namespace Avalonia.Rendering.SceneGraph scene.Layers[node.LayerRoot].Dirty.Add(node.Bounds); + if (node.Visual is Visual v) + { + BoundsTracker.SetTransformedBounds(v, null); + } + foreach (VisualNode child in node.Children) { var geometry = child as IDrawOperation; - var visual = child as VisualNode; - if (visual != null) + if (child is VisualNode visual) { Deindex(scene, visual); }