From e7556fbf398e4304ac32b03917b79a62e24ed25e Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 8 Mar 2016 21:24:17 +0100 Subject: [PATCH] Expose IVisual.VisualRoot. --- src/Perspex.SceneGraph/Visual.cs | 17 +++++------------ src/Perspex.SceneGraph/VisualTree/IVisual.cs | 6 ++++++ .../VisualTree/VisualExtensions.cs | 10 +--------- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/Perspex.SceneGraph/Visual.cs b/src/Perspex.SceneGraph/Visual.cs index 575f555617..63b7bf14f1 100644 --- a/src/Perspex.SceneGraph/Visual.cs +++ b/src/Perspex.SceneGraph/Visual.cs @@ -77,19 +77,8 @@ namespace Perspex public static readonly StyledProperty ZIndexProperty = PerspexProperty.Register(nameof(ZIndex)); - /// - /// The visual's bounds relative to its parent. - /// private Rect _bounds; - - /// - /// Holds the parent of the visual. - /// private IVisual _visualParent; - - /// - /// The logger for visual-level events. - /// private readonly ILogger _visualLogger; /// @@ -239,6 +228,11 @@ namespace Perspex /// IVisual IVisual.VisualParent => _visualParent; + /// + /// Gets the root of the visual tree, if the control is attached to a visual tree. + /// + IRenderRoot IVisual.VisualRoot { get; } + /// /// Invalidates the visual and queues a repaint. /// @@ -483,7 +477,6 @@ namespace Perspex _visualLogger.Verbose("Attached to visual tree"); VisualRoot = e.Root; - OnAttachedToVisualTree(e); if (VisualChildren != null) diff --git a/src/Perspex.SceneGraph/VisualTree/IVisual.cs b/src/Perspex.SceneGraph/VisualTree/IVisual.cs index 904d6529fe..bac8b5bd2e 100644 --- a/src/Perspex.SceneGraph/VisualTree/IVisual.cs +++ b/src/Perspex.SceneGraph/VisualTree/IVisual.cs @@ -4,6 +4,7 @@ using System; using Perspex.Collections; using Perspex.Media; +using Perspex.Rendering; namespace Perspex.VisualTree { @@ -80,6 +81,11 @@ namespace Perspex.VisualTree /// IVisual VisualParent { get; } + /// + /// Gets the root of the visual tree, if the control is attached to a visual tree. + /// + IRenderRoot VisualRoot { get; } + /// /// Gets or sets the Z index of the node. /// diff --git a/src/Perspex.SceneGraph/VisualTree/VisualExtensions.cs b/src/Perspex.SceneGraph/VisualTree/VisualExtensions.cs index d08682c829..bb0da6db03 100644 --- a/src/Perspex.SceneGraph/VisualTree/VisualExtensions.cs +++ b/src/Perspex.SceneGraph/VisualTree/VisualExtensions.cs @@ -176,15 +176,7 @@ namespace Perspex.VisualTree { Contract.Requires(visual != null); - var parent = visual.VisualParent; - - while (parent != null) - { - visual = parent; - parent = visual.VisualParent; - } - - return visual; + return visual.VisualRoot as IVisual; } ///