From 65b40f59bcd64028de770e2d583d40d910a40ab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Mon, 9 Feb 2026 13:38:11 +0100 Subject: [PATCH] Fix adorner rounded clip and add render test --- .../ServerCompositionVisual.Adorners.cs | 2 +- .../Controls/AdornerTests.cs | 30 ++++++++++++++++++ ...Respects_Rounded_ClipToBounds.expected.png | Bin 0 -> 802 bytes 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/TestFiles/Skia/Controls/Adorner/Adorner_Respects_Rounded_ClipToBounds.expected.png diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.Adorners.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.Adorners.cs index 6f5f7b7572..cc5ae6a21a 100644 --- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.Adorners.cs +++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.Adorners.cs @@ -92,7 +92,7 @@ partial class ServerCompositionVisual if (visual.ClipToBounds) { - _canvas.PushClip(new Rect(0, 0, visual.Size.X, visual.Size.Y)); + visual.PushClipToBounds(_canvas); _adornerPushedClipStack!.Push((int)Op.PopClip); } diff --git a/tests/Avalonia.RenderTests/Controls/AdornerTests.cs b/tests/Avalonia.RenderTests/Controls/AdornerTests.cs index fa60c12853..8cb326b0df 100644 --- a/tests/Avalonia.RenderTests/Controls/AdornerTests.cs +++ b/tests/Avalonia.RenderTests/Controls/AdornerTests.cs @@ -80,5 +80,35 @@ public class AdornerTests : TestBase await CheckAdornedContent(content, adorned, adorner, testName: "Focus_Adorner_Is_Properly_Clipped_Clip_" + clip); } + + [Fact] + public async Task Adorner_Respects_Rounded_ClipToBounds() + { + Border adorned; + var content = new Border + { + Background = Brushes.DarkRed, + Padding = new Thickness(20), + Width = 240, + Height = 240, + Child = adorned = new Border + { + Width = 160, + Height = 160, + Background = Brushes.Transparent, + BorderBrush = Brushes.Black, + BorderThickness = new Thickness(6), + CornerRadius = new CornerRadius(28), + ClipToBounds = true + } + }; + + var adorner = new Border + { + Background = Brushes.DeepSkyBlue + }; + + await CheckAdornedContent(content, adorned, adorner, width: 260, height: 260); + } } diff --git a/tests/TestFiles/Skia/Controls/Adorner/Adorner_Respects_Rounded_ClipToBounds.expected.png b/tests/TestFiles/Skia/Controls/Adorner/Adorner_Respects_Rounded_ClipToBounds.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a0506640b3a386c16bdb4baf5aaeb77855aa5a6a GIT binary patch literal 802 zcmeAS@N?(olHy`uVBq!ia0y~yU}OPd4mP03ISwz71WU1#X9x!n)NrJ9FfcIP^mK6y zshIQj+D6`H2NBkThZh-k6^V*Gy;QKxknu;0jd1*jNzs1|fjXh!-KIIUJNgUnShMap z{rgFL{at(33NA+mB@PD`#tsDrK^BE31{Z+_4kiKW3Z~4peW3OJykRv{ea`)9H-+^c zI?>)zT6kpSn7L*%drT@Qt{!}hp>^^AhbkFVdQ&MBb@ E04&Or$p8QV literal 0 HcmV?d00001