From 290749b5e8442ca291b0256c6ef842cede712af1 Mon Sep 17 00:00:00 2001 From: prakashKannanSf3972 <127308739+prakashKannanSf3972@users.noreply.github.com> Date: Fri, 10 Jan 2025 18:36:51 +0530 Subject: [PATCH] Fixed-Shell-TemplateView-Initial-Margin --- .../Shell/Windows/ShellFlyoutItemView.cs | 4 +- ...rifyTemplateViewMarginOnInitialDisplay.png | Bin 0 -> 13911 bytes .../TestCases.HostApp/Issues/Issue18423.cs | 40 ++++++++++++++++++ .../Tests/Issues/Issue18423.cs | 25 +++++++++++ ...rifyTemplateViewMarginOnInitialDisplay.png | Bin 0 -> 13611 bytes 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyTemplateViewMarginOnInitialDisplay.png create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue18423.cs create mode 100644 src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue18423.cs create mode 100644 src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/VerifyTemplateViewMarginOnInitialDisplay.png diff --git a/src/Controls/src/Core/Handlers/Shell/Windows/ShellFlyoutItemView.cs b/src/Controls/src/Core/Handlers/Shell/Windows/ShellFlyoutItemView.cs index 5718cef5b539..4400e9fa1c0f 100644 --- a/src/Controls/src/Core/Handlers/Shell/Windows/ShellFlyoutItemView.cs +++ b/src/Controls/src/Core/Handlers/Shell/Windows/ShellFlyoutItemView.cs @@ -128,7 +128,9 @@ void ShellElementPropertyChanged(object sender, PropertyChangedEventArgs e) protected override global::Windows.Foundation.Size ArrangeOverride(global::Windows.Foundation.Size finalSize) { - if (this.ActualWidth > 0 && _content is IView view) + // Replaced ActualWidth with finalSize.Width since ActualWidth updates only after ArrangeOverride completes, + // ensuring accurate layout during the initial arrangement phase. + if (finalSize.Width > 0 && _content is IView view) { view.Arrange(new Rect(0, 0, finalSize.Width, finalSize.Height)); return finalSize; diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyTemplateViewMarginOnInitialDisplay.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyTemplateViewMarginOnInitialDisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..27c540446f02dc76c2a436a604fd2632fb4d207e GIT binary patch literal 13911 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 L-P@|S9?tz2>ne6- literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue18423.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue18423.cs new file mode 100644 index 000000000000..5c2ffdff6e40 --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue18423.cs @@ -0,0 +1,40 @@ +namespace Maui.Controls.Sample.Issues +{ + + [Issue(IssueTracker.Github, 18423, "[Windows] Shell flyout template items do not have a margin applied on first show", PlatformAffected.UWP)] + public partial class Issue18423Shell : Shell + { + public Issue18423Shell() + { + FlyoutBehavior = FlyoutBehavior.Flyout; + + ItemTemplate = new DataTemplate(() => + { + return new Label + { + AutomationId = "LabelWithMargin", + Margin = new Thickness(20), + Text = "Title" + }; + }); + + ShellContent shellContent = new ShellContent + { + Title = "Home", + ContentTemplate = new DataTemplate(typeof(Issue18423Page)), + Route = "MainPage" + }; + + Items.Add(shellContent); + } + } + + public partial class Issue18423Page : ContentPage + { + public Issue18423Page() + { + BackgroundColor = Colors.HotPink; + this.AutomationId = "MainPage"; + } + } +} \ No newline at end of file diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue18423.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue18423.cs new file mode 100644 index 000000000000..534d723c4164 --- /dev/null +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue18423.cs @@ -0,0 +1,25 @@ +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.TestCases.Tests.Issues +{ + public class Issue18423 : _IssuesUITest + { + public Issue18423(TestDevice testDevice) : base(testDevice) + { + } + + public override string Issue => "[Windows] Shell flyout template items do not have a margin applied on first show"; + + [Test] + [Category(UITestCategories.Shell)] + public void VerifyTemplateViewMarginOnInitialDisplay() + { + App.WaitForElement("MainPage"); + App.TapShellFlyoutIcon(); + App.WaitForElement("LabelWithMargin"); + VerifyScreenshot(); + } + } +} \ No newline at end of file diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/VerifyTemplateViewMarginOnInitialDisplay.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/VerifyTemplateViewMarginOnInitialDisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..c3665cffd10e0b4fc7113aefe4cf6deed31579d0 GIT binary patch literal 13611 zcmeI(`%_cd9RTnX2ohe^bjq*@3Ang`g{2{ggg{_{u#wsFth<0DgvEr1Ee}aBAs|SV z4J|bpTp3nzqOPb#EOcBJ0<`kT3K1|&2P|4a9+6}T1PBlkgpgkCuH8;&|A0=vDu-$J90C0#oN=*U)%>n?kjIl%_r3VTqNaKFuXi_Wy0#5+W zo(JF+5<2@W0L26VG#LPpzW~6g@M>3LC;+I&gkK(uHX~cxv$eIgiHV7e7cV+EI3Ohy z3T0zswwzjrYQ&VnkZfG<*KR;h25{-?GNhFf~ z{{HIfY7U2EG#XEyJeii3mXwqf6%`d385tH9cKrD9qM{ZQ(4pkyy@J)*1IbLy%#8^; z=keG2l-Z#~+RTt>M20Vq5tAfz9?2D7(o~8s4&`$xpGb?wvC{h<9MkMYJV!Nh!i`r} zwsUJ4>nuHrs~p>ZIUt_oDls;eO7t&X@};wf)Ze9iLWs!}eR_PzZRLU?Jygl(Dg&++ zZ(bV}Z0eS z>9b>Q%+>#8gRQ@QBZ)RM{-J7KDD#QKGfVoq<66njq~65V^2fhk2^LH(PA7=>?=MET zd#n!(UJWlBYgkN;`cl-}Bpyl2@0|bB;8$q{!Gh(Bwv47xfmhTFl1T!ig=Huv3#}7A0T0qruqIRKFU0 zcxQBaRi&KI)|`^fC(|-W#A_74FkT1l6Atew*R-p=(G50c(SG_$L^puewI(Q%ct@-nT|D4;OqZ)$@?HBL|7 zB&ENEP%FEW%gtCsst;iNpZzO9uOmap&*|#NjEHf1HCk+a1g;^A`Y>fEVjr&qn zOS&at$8>377%`kwQo68Qk#GJsS11!#e0O=f+D_A*LD@CRs;Z$Nw6klb8DCybPdCgh zibstPv+-qg^L@z?v<8EmYlLCYJ?3{%Oe}+fX?hi8CY2kt=HdAB*kZKjyPPKlE6T;7 za6|Wcg?4*8JjdSf(VMtRT=8msMI0~PW}VSh`0&@55~KJVI&UIY|Hm81yl$hadb&5Q zIv7P}4XM4WWimL#QFt5NZfDgc?E(p@vXH zs3Fu4Y6vxi8bS@BhEPMOA=D6R_k|eSS*<~3r^IB%#)6+CeGITb z{S>@j#)Cq3Aj}2mH+=w*bv(#saoytk2%2@>^83CGvcd;|S*h(V(!9rwPT{gX<+8~q zir7d4hy-Hb`vm{@{RzkXiR8m1GJ)VjARxyW`@d%XM?qczD>tj;#|ub_RxgkO@3&Xr z=H{_E+)wigf4ruEdJy?0;AgLE*!;AV*+%S@Nd7Dqj<+Fd2 zLPgG;&&e&w2mb!V!@lnRZTzqPdsynfhY=449PxFJN;kcS3