|
|
|
@ -83,6 +83,7 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph |
|
|
|
Margin = new Thickness(10, 20, 30, 40), |
|
|
|
Child = canvas = new Canvas |
|
|
|
{ |
|
|
|
ClipToBounds = true, |
|
|
|
Background = Brushes.AliceBlue, |
|
|
|
} |
|
|
|
} |
|
|
|
@ -129,6 +130,7 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph |
|
|
|
(border = new Border |
|
|
|
{ |
|
|
|
Background = Brushes.AliceBlue, |
|
|
|
ClipToBounds = true, |
|
|
|
Width = 100, |
|
|
|
Height = 100, |
|
|
|
[Canvas.LeftProperty] = 50, |
|
|
|
@ -173,6 +175,7 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph |
|
|
|
(border = new Border |
|
|
|
{ |
|
|
|
Background = Brushes.AliceBlue, |
|
|
|
ClipToBounds = true, |
|
|
|
Width = 100, |
|
|
|
Height = 100, |
|
|
|
[Canvas.LeftProperty] = 50, |
|
|
|
@ -254,6 +257,7 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph |
|
|
|
Margin = new Thickness(24, 26), |
|
|
|
Child = target = new Border |
|
|
|
{ |
|
|
|
ClipToBounds = true, |
|
|
|
Margin = new Thickness(26, 24), |
|
|
|
Width = 100, |
|
|
|
Height = 100, |
|
|
|
@ -515,6 +519,50 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Update_ClipBounds_For_Negative_Margin() |
|
|
|
{ |
|
|
|
using (TestApplication()) |
|
|
|
{ |
|
|
|
Decorator decorator; |
|
|
|
Border border; |
|
|
|
var tree = new TestRoot |
|
|
|
{ |
|
|
|
Width = 100, |
|
|
|
Height = 100, |
|
|
|
Child = decorator = new Decorator |
|
|
|
{ |
|
|
|
Margin = new Thickness(0, 10, 0, 0), |
|
|
|
Child = border = new Border |
|
|
|
{ |
|
|
|
Background = Brushes.Red, |
|
|
|
ClipToBounds = true, |
|
|
|
Margin = new Thickness(0, -5, 0, 0), |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var layout = AvaloniaLocator.Current.GetService<ILayoutManager>(); |
|
|
|
layout.ExecuteInitialLayoutPass(tree); |
|
|
|
|
|
|
|
var scene = new Scene(tree); |
|
|
|
var sceneBuilder = new SceneBuilder(); |
|
|
|
sceneBuilder.UpdateAll(scene); |
|
|
|
|
|
|
|
var borderNode = scene.FindNode(border); |
|
|
|
Assert.Equal(new Rect(0, 5, 100, 95), borderNode.ClipBounds); |
|
|
|
|
|
|
|
border.Margin = new Thickness(0, -8, 0, 0); |
|
|
|
layout.ExecuteLayoutPass(); |
|
|
|
|
|
|
|
scene = scene.CloneScene(); |
|
|
|
sceneBuilder.Update(scene, border); |
|
|
|
|
|
|
|
borderNode = scene.FindNode(border); |
|
|
|
Assert.Equal(new Rect(0, 2, 100, 98), borderNode.ClipBounds); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Update_Descendent_Tranform_When_Margin_Changed() |
|
|
|
{ |
|
|
|
|