Browse Source

Don't remove root layer when hiding root.

scenegraph-after-breakage
Steven Kirk 9 years ago
parent
commit
0f81420ee2
  1. 2
      src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs
  2. 27
      tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests_Layers.cs

2
src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs

@ -274,7 +274,7 @@ namespace Avalonia.Rendering.SceneGraph
}
}
if (node.LayerRoot == node.Visual)
if (node.LayerRoot == node.Visual && node.Visual != scene.Root.Visual)
{
scene.Layers.Remove(node.LayerRoot);
}

27
tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests_Layers.cs

@ -273,5 +273,32 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph
((MockStreamGeometryImpl)borderLayer.GeometryClip).Transform);
}
}
[Fact]
public void Hiding_Root_Should_Not_Remove_Root_Layer()
{
using (TestApplication())
{
Border border;
var tree = new TestRoot
{
Child = border = new Border()
};
var layout = AvaloniaLocator.Current.GetService<ILayoutManager>();
layout.ExecuteInitialLayoutPass(tree);
var scene = new Scene(tree);
var sceneBuilder = new SceneBuilder();
sceneBuilder.UpdateAll(scene);
tree.IsVisible = false;
scene = scene.Clone();
sceneBuilder.Update(scene, tree);
Assert.Equal(1, scene.Layers.Count);
}
}
}
}

Loading…
Cancel
Save