Browse Source

Added Visual.ZIndex.

And set ZIndex of adorner layer to top-most.
pull/39/head
Steven Kirk 11 years ago
parent
commit
783211c964
  1. 1
      Perspex.Controls/Primitives/AdornerDecorator.cs
  2. 5
      Perspex.SceneGraph/IVisual.cs
  3. 3
      Perspex.SceneGraph/Rendering/RendererBase.cs
  4. 10
      Perspex.SceneGraph/Visual.cs

1
Perspex.Controls/Primitives/AdornerDecorator.cs

@ -12,6 +12,7 @@ namespace Perspex.Controls.Primitives
{ {
this.AdornerLayer = new AdornerLayer(); this.AdornerLayer = new AdornerLayer();
this.AdornerLayer.Parent = this; this.AdornerLayer.Parent = this;
this.AdornerLayer.ZIndex = int.MaxValue;
this.AddVisualChild(this.AdornerLayer); this.AddVisualChild(this.AdornerLayer);
} }

5
Perspex.SceneGraph/IVisual.cs

@ -63,6 +63,11 @@ namespace Perspex
/// </summary> /// </summary>
IVisual VisualParent { get; } IVisual VisualParent { get; }
/// <summary>
/// Gets the Z index of the node.
/// </summary>
int ZIndex { get; }
/// <summary> /// <summary>
/// Renders the scene graph node to a <see cref="IDrawingContext"/>. /// Renders the scene graph node to a <see cref="IDrawingContext"/>.
/// </summary> /// </summary>

3
Perspex.SceneGraph/Rendering/RendererBase.cs

@ -6,6 +6,7 @@
namespace Perspex.Rendering namespace Perspex.Rendering
{ {
using System.Linq;
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
@ -88,7 +89,7 @@ namespace Perspex.Rendering
visual.Render(context); visual.Render(context);
d.Dispose(); d.Dispose();
foreach (var child in visual.VisualChildren) foreach (var child in visual.VisualChildren.OrderBy(x => x.ZIndex))
{ {
this.Render(child, context, translation, transform); this.Render(child, context, translation, transform);
} }

10
Perspex.SceneGraph/Visual.cs

@ -39,6 +39,9 @@ namespace Perspex
public static readonly PerspexProperty<Origin> TransformOriginProperty = public static readonly PerspexProperty<Origin> TransformOriginProperty =
PerspexProperty.Register<Visual, Origin>("TransformOrigin", defaultValue: Origin.Default); PerspexProperty.Register<Visual, Origin>("TransformOrigin", defaultValue: Origin.Default);
public static readonly PerspexProperty<int> ZIndexProperty =
PerspexProperty.Register<Visual, int>("ZIndex");
private PerspexList<IVisual> visualChildren; private PerspexList<IVisual> visualChildren;
private Visual visualParent; private Visual visualParent;
@ -91,6 +94,12 @@ namespace Perspex
set { this.SetValue(TransformOriginProperty, value); } set { this.SetValue(TransformOriginProperty, value); }
} }
public int ZIndex
{
get { return this.GetValue(ZIndexProperty); }
set { this.SetValue(ZIndexProperty, value); }
}
IPerspexReadOnlyList<IVisual> IVisual.VisualChildren IPerspexReadOnlyList<IVisual> IVisual.VisualChildren
{ {
get { return this.visualChildren; } get { return this.visualChildren; }
@ -104,6 +113,7 @@ namespace Perspex
} }
} }
public void InvalidateVisual() public void InvalidateVisual()
{ {
IRenderRoot root = this.GetSelfAndVisualAncestors() IRenderRoot root = this.GetSelfAndVisualAncestors()

Loading…
Cancel
Save