Fix Border clip regression (#20648)

This commit is contained in:
Nikita Tsukanov
2026-02-09 20:08:59 +05:00
committed by GitHub
parent 7d0c2264f5
commit 30b451da52
4 changed files with 34 additions and 1 deletions
@@ -110,7 +110,7 @@ partial class ServerCompositionVisual
_walkContext.PushClip(effectiveClip); _walkContext.PushClip(effectiveClip);
if (visual.ClipToBounds) if (visual.ClipToBounds)
_canvas.PushClip(new Rect(0, 0, visual.Size.X, visual.Size.Y)); visual.PushClipToBounds(_canvas);
if (visual.Clip != null) if (visual.Clip != null)
_canvas.PushGeometryClip(visual.Clip); _canvas.PushGeometryClip(visual.Clip);
@@ -424,5 +424,38 @@ namespace Avalonia.Skia.RenderTests
await RenderToFile(target); await RenderToFile(target);
CompareImages(); CompareImages();
} }
[Theory,
InlineData(true),
InlineData(false)]
public async Task Border_Clips_To_Round_Bounds(bool uniform)
{
var cornerRadius = uniform
? new CornerRadius(20)
: new CornerRadius(20, 10, 30, 5);
Decorator target = new Decorator
{
Padding = new Thickness(8),
Width = 200,
Height = 200,
Child = new Border
{
CornerRadius = cornerRadius,
Background = Brushes.LightBlue,
ClipToBounds = true,
Child = new Border
{
Width = 300,
Height = 300,
Background = Brushes.Red,
}
}
};
var testSuffix = nameof(Border_Clips_To_Round_Bounds) + "_" + (uniform ? "Uniform" : "NonUniform");
await RenderToFile(target, testSuffix);
CompareImages(testSuffix);
}
} }
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB