From 7545092bf2c283bb4f4bf4104becbe679146378b Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Sun, 19 Oct 2025 15:03:04 +0200 Subject: [PATCH 1/2] [Android] Fixed back button icon selection logic in ShellToolbarTracker Updates the logic for selecting the back button icon to use the IconOverride property when FlyoutBehavior is not Flyout. This ensures the correct icon is displayed based on the current behavior. --- .../Handlers/Shell/Android/ShellToolbarTracker.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellToolbarTracker.cs b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellToolbarTracker.cs index feda1cdbb481..80a85e4a377f 100644 --- a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellToolbarTracker.cs +++ b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellToolbarTracker.cs @@ -416,8 +416,7 @@ protected virtual async void UpdateLeftBarButtonItem(Context context, AToolbar t var command = backButtonHandler.GetPropertyIfSet(BackButtonBehavior.CommandProperty, null); var backButtonVisibleFromBehavior = backButtonHandler.GetPropertyIfSet(BackButtonBehavior.IsVisibleProperty, true); bool isEnabled = _shell.Toolbar.BackButtonEnabled; - //Add the FlyoutIcon only if the FlyoutBehavior is Flyout - var image = _flyoutBehavior == FlyoutBehavior.Flyout ? GetFlyoutIcon(backButtonHandler, page) : null; + var image = _flyoutBehavior == FlyoutBehavior.Flyout ? GetFlyoutIcon(backButtonHandler, page) : backButtonHandler.GetPropertyIfSet(BackButtonBehavior.IconOverrideProperty, null); var backButtonVisible = _toolbar.BackButtonVisible; DrawerArrowDrawable icon = null; From 6f371b22c58a5d81d7524e5ecaf7f5cc891e659a Mon Sep 17 00:00:00 2001 From: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com> Date: Wed, 22 Oct 2025 20:22:42 +0200 Subject: [PATCH 2/2] Added a UITest --- .../TestCases.HostApp/Issues/Issue32050.xaml | 16 ++++++++++++++ .../Issues/Issue32050.xaml.cs | 21 ++++++++++++++++++ .../Tests/Issues/Issue32050.cs | 22 +++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue32050.xaml create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue32050.xaml.cs create mode 100644 src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32050.cs diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue32050.xaml b/src/Controls/tests/TestCases.HostApp/Issues/Issue32050.xaml new file mode 100644 index 000000000000..7d42469112d2 --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue32050.xaml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue32050.xaml.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue32050.xaml.cs new file mode 100644 index 000000000000..86f91e3f2de7 --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue32050.xaml.cs @@ -0,0 +1,21 @@ +namespace Maui.Controls.Sample.Issues; + +[Issue(IssueTracker.Github, 32050, "IconOverride in Shell.BackButtonBehavior does not work.", PlatformAffected.iOS)] +public partial class Issue32050 : Shell +{ + public Issue32050() + { + InitializeComponent(); + Routing.RegisterRoute("Issue32050SubPage", typeof(Issue32050SubPage)); + GoToAsync("Issue32050SubPage"); + } + + class Issue32050SubPage : ContentPage + { + public Issue32050SubPage() + { + Content = new Label { Text = "Label", AutomationId = "Label" }; + SetBackButtonBehavior(this, new BackButtonBehavior { IconOverride = "coffee.png" }); + } + } +} \ No newline at end of file diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32050.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32050.cs new file mode 100644 index 000000000000..a23677289e08 --- /dev/null +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32050.cs @@ -0,0 +1,22 @@ +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.TestCases.Tests.Issues; + +public class Issue32050 : _IssuesUITest +{ + public Issue32050(TestDevice testDevice) : base(testDevice) + { + } + + public override string Issue => "IconOverride in Shell.BackButtonBehavior does not work."; + + [Test] + [Category(UITestCategories.TitleView)] + public void IconOverrideInShellBackButtonBehaviorShouldWork() + { + App.WaitForElement("Label"); + VerifyScreenshot(); + } +} \ No newline at end of file