From 66eb3fa1e92a93ba01fbbd8e10b254f24f900408 Mon Sep 17 00:00:00 2001 From: KarthikRajaKalaimani <92777139+KarthikRajaKalaimani@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:01:40 +0530 Subject: [PATCH 1/4] Fixed StackLayout fails to render content while applying Clip, and the layout is placed inside a Border with Background --- src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs b/src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs index 4358d9b7d886..db3bbd71a4fb 100644 --- a/src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs +++ b/src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs @@ -32,7 +32,7 @@ protected override void SetupContainer() ContainerView ??= new WrapperView(PlatformView.Bounds); ContainerView.AddSubview(PlatformView); - if (oldIndex is int idx && idx >= 0) + if (oldIndex is int idx && idx > 0) oldParent?.InsertSubview(ContainerView, idx); else oldParent?.AddSubview(ContainerView); From 23a8b433e82707ce0ac4a2cc5eafc32f8de18754 Mon Sep 17 00:00:00 2001 From: KarthikRajaKalaimani <92777139+KarthikRajaKalaimani@users.noreply.github.com> Date: Mon, 29 Dec 2025 13:21:14 +0530 Subject: [PATCH 2/4] Modified the fix --- src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs | 2 +- src/Core/src/Platform/iOS/WrapperView.cs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs b/src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs index db3bbd71a4fb..4358d9b7d886 100644 --- a/src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs +++ b/src/Core/src/Handlers/View/ViewHandlerOfT.iOS.cs @@ -32,7 +32,7 @@ protected override void SetupContainer() ContainerView ??= new WrapperView(PlatformView.Bounds); ContainerView.AddSubview(PlatformView); - if (oldIndex is int idx && idx > 0) + if (oldIndex is int idx && idx >= 0) oldParent?.InsertSubview(ContainerView, idx); else oldParent?.AddSubview(ContainerView); diff --git a/src/Core/src/Platform/iOS/WrapperView.cs b/src/Core/src/Platform/iOS/WrapperView.cs index b75189a2f877..db298fe6c14a 100644 --- a/src/Core/src/Platform/iOS/WrapperView.cs +++ b/src/Core/src/Platform/iOS/WrapperView.cs @@ -99,10 +99,15 @@ public override void LayoutSubviews() return; if (_borderView is not null) + { BringSubviewToFront(_borderView); + } + else + { + this.Superview?.BringSubviewToFront(this); + } var child = subviews[0]; - child.Frame = Bounds; if (MaskLayer is not null) From 1adbfec4a176f2ed10f0d6e758ff94564c55ae85 Mon Sep 17 00:00:00 2001 From: KarthikRajaKalaimani <92777139+KarthikRajaKalaimani@users.noreply.github.com> Date: Mon, 29 Dec 2025 17:41:26 +0530 Subject: [PATCH 3/4] Included test case --- .../snapshots/android/Issue33241Test.png | Bin 0 -> 4047 bytes .../TestCases.HostApp/Issues/Issue33241.cs | 33 ++++++++++++++++++ .../Tests/Issues/Issue33241.cs | 22 ++++++++++++ .../snapshots/ios/Issue33241Test.png | Bin 0 -> 4550 bytes 4 files changed, 55 insertions(+) create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android/Issue33241Test.png create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue33241.cs create mode 100644 src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue33241.cs create mode 100644 src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/Issue33241Test.png diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/Issue33241Test.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/Issue33241Test.png new file mode 100644 index 0000000000000000000000000000000000000000..823092044501f2caad1b27fa651461d71f2f7091 GIT binary patch literal 4047 zcmeAS@N?(olHy`uVBq!ia0y~yV6k9eU^~vj3>3*tJsk<86p}rHd>I(3)EF2VS{N99 z0fib~Fff!FFfhDIU|_JC!N4G1FlSew4NyWNz$e62+R$A{NGN&AiuQA_|1&TwowWfd z^Z);UzTPSSfGox&Z+91VvBZwoKn{C}r>`sfOCDKnS?e2mFA5kK_$GL|IEGZ*dV9%I zu)%?WVdLcnW|Ib%4Ndi&Q*4ZHU!0h6LW1GL+{~TP=5;ysDKnlvP-6GwnNu+cVU(S8p zP{8CSwP102$sS8!cU85-HKHUXu_V z85pEVUcQW?AvZrIGp!Q02630{e4qvmxD6$lxv9k^iMa*1^*982f%?`Ap00i_>zopr E0I*eg+5i9m literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue33241.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue33241.cs new file mode 100644 index 000000000000..c8b609a50d15 --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue33241.cs @@ -0,0 +1,33 @@ +using Microsoft.Maui.Controls.Shapes; +namespace Maui.Controls.Sample.Issues; + +[Issue(IssueTracker.Github, 33241, "StackLayout fails to render content while applying Clip, and the layout is placed inside a Border with Background", PlatformAffected.iOS | PlatformAffected.macOS)] +public class Issue33241 : ContentPage +{ + public Issue33241() + { + var layout = + new Border + { + Background = Colors.SkyBlue, + Padding = 10, + Content = + new Issue33241_CustomView + { + Background = Colors.Red, + AutomationId = "CustomView", + Padding = 10 + } + }; + Content = layout; + } +} + +public class Issue33241_CustomView : StackLayout +{ + protected override void OnSizeAllocated(double width, double height) + { + this.Clip = new RoundRectangleGeometry { Rect = new Rect(0, 0, width, height) }; + base.OnSizeAllocated(width, height); + } +} \ No newline at end of file diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue33241.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue33241.cs new file mode 100644 index 000000000000..6c3400cbe016 --- /dev/null +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue33241.cs @@ -0,0 +1,22 @@ +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.TestCases.Tests.Issues; + +public class Issue33241 : _IssuesUITest +{ + public Issue33241(TestDevice testDevice) : base(testDevice) + { + } + + public override string Issue => "StackLayout fails to render content while applying Clip, and the layout is placed inside a Border with Background"; + + [Test] + [Category(UITestCategories.Border)] + public void Issue33241Test() + { + App.WaitForElement("CustomView"); + VerifyScreenshot(); + } +} diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/Issue33241Test.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/Issue33241Test.png new file mode 100644 index 0000000000000000000000000000000000000000..7007e1d269d7cc88480ce40fb4e930d28ebe0afa GIT binary patch literal 4550 zcmeAS@N?(olHy`uVBq!ia0y~yU`b(M;CRQx3=}b(SUv|xDI|LY`7$t6sWC7#v@kII z0tz*}U|=XUU|@Kaz`$TNgMmT3V9u^U8=wSFfKQ0)|Ns9Ve)`pZ?)85L2B+_d-av82 zByV>Yh7ML)4gz@~M@>vWF{3kqJ978H@y}jVb z+W@p=d&*C{bBSrm%Vub%bD^7(gQoj6lfHp2@%hW-~AVhZul>X#o>Vge7GGGmOm%9DHD4c({Y>ACOWl zag8WRNi0dVN-jzTQVd20My9%kM!H6pA%=!lMkZFq=Gq1ZRt5&F+qHJ0Xvob^$xN%n zt)b-ABvzmX4Y&;@nYpROC5gEOxb-Oi-+T+GM+BrNwIVak$`wfXr==CAmM|Dw=qOzL zCVLtvFAbLu$gD`siEsg$oL8KgpT}TmXk?2BE=eWPBKxGV` Lu6{1-oD!M<3{w86 literal 0 HcmV?d00001 From fd8048bb8660b4d7050db86ae68573275b7d226f Mon Sep 17 00:00:00 2001 From: KarthikRajaKalaimani <92777139+KarthikRajaKalaimani@users.noreply.github.com> Date: Mon, 5 Jan 2026 12:09:08 +0530 Subject: [PATCH 4/4] Snapshot included for mac and android platform --- .../snapshots/android/Issue33241Test.png | Bin 4047 -> 4044 bytes .../snapshots/mac/Issue33241Test.png | Bin 0 -> 5811 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/Issue33241Test.png diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/Issue33241Test.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/Issue33241Test.png index 823092044501f2caad1b27fa651461d71f2f7091..9e84f3661f6fefa9c3dd76cdb7a745f9d9264202 100644 GIT binary patch delta 159 zcmX>ve@1>nfSqW7Pl&6uq5J>;|JUC8)PC;ue+Gu7vo@RubI0dBL@1HH*IB^G`sIftafu)t9nU#^bwt<0_fx*e!*>fky@ylS! g>}b2JIJuu+UJ*mj`^lgF0WDzgboFyt=akR{0B58#^8f$< delta 162 zcmX>je_nnc z#S%MS13By^p1!W^FL`9SWvy@My(rk&w}VgA$TGyx(8|ct%G6TZz`)ADAWib}<;l_f hGMF;rF4_5$d-&xQG4wbDdV%a^@O1TaS?83{1OV@oFsJ|k diff --git a/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/Issue33241Test.png b/src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/Issue33241Test.png new file mode 100644 index 0000000000000000000000000000000000000000..f12088536e94ce7284195639c2b2746747d40896 GIT binary patch literal 5811 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