Skip to content

[Windows] Fix Flyout/Locked mode header collapse regression causing UI test failures on candidate branch#35312

Merged
kubaflo merged 3 commits into
dotnet:inflight/candidatefrom
BagavathiPerumal:fix-30254-regression
May 7, 2026
Merged

[Windows] Fix Flyout/Locked mode header collapse regression causing UI test failures on candidate branch#35312
kubaflo merged 3 commits into
dotnet:inflight/candidatefrom
BagavathiPerumal:fix-30254-regression

Conversation

@BagavathiPerumal

@BagavathiPerumal BagavathiPerumal commented May 5, 2026

Copy link
Copy Markdown
Contributor

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Root cause

PR #30382 introduced AlwaysShowHeader = false in the RootNavigationView constructor to fix Issue #30254 (blank header space in the Shell flyout). However, this was applied unconditionally across all NavigationView display modes.

In the scenario from Issue2740 (FlyoutPage with FlyoutBehavior.Locked), the PaneDisplayMode is Left, not LeftMinimal. Because AlwaysShowHeader was set to false, WinUI’s NavigationView collapsed the header whenever the Header became temporarily null during page transitions. As a result, toolbar items (e.g., the Switch button) were removed from the UI Automation tree, causing the test to fail.

Description of Change

The fix updates AlwaysShowHeader dynamically based on the current PaneDisplayMode within the PaneDisplayModeChangedhandler:

AlwaysShowHeader = PaneDisplayMode != NavigationViewPaneDisplayMode.LeftMinimal;
This ensures:
• AlwaysShowHeader = false only for LeftMinimal mode (Shell Flyout), preserving the fix for Issue #30254.
• AlwaysShowHeader = true for all other modes (e.g., Left / FlyoutBehavior.Locked), ensuring the header remains visible and toolbar items stay accessible in the UI Automation tree.

Also added the updated snapshot for the #30382.

Issues Fixed

Resaved Test snapshots

The below-mentioned test case was resaved because the ContentPage did not have a title. Based on the fix, the currently generated image is the expected image, so the test snapshot has been resaved accordingly, similar to #30382.

  • ModalPageBackgroundShouldBeTransparent

Added snapshots:

Additionally, the updated snapshot for #30382 has also been added for the Mac and Windows platforms.

  • ShouldHideHeaderWhenTitleEmpty
  • ShouldShowHeaderWhenTitleNotEmpty

Failure test cases

  • VerifyFlyoutVerticalScrollModeDisabled
  • VerifyFlyoutPageToolbarItemsRender
  • ShouldFlyoutBeVisibleAfterMaximizingWindow
  • FlyoutItemTextShouldDisplayProperly
  • VerifyShellMenuItemsAlignedInRTL
  • TestB43527UpdateTitle
  • TitleUpdatesAfterShowingNonFlyoutPage
  • WhenFlyoutIsLockedButtonsAreStillVisible
  • Issue2740Test
  • NavigationPageTitle
  • DoNotAccessDisposedCollectionView

@Tamilarasan-Paranthaman Tamilarasan-Paranthaman added area-testing Unit tests, device tests platform/windows area-controls-shell Shell Navigation, Routes, Tabs, Flyout labels May 5, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 1 findings

See inline comments for details.

Comment thread src/Core/src/Platform/Windows/RootNavigationView.cs
@MauiBot MauiBot added s/agent-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels May 5, 2026
Comment thread src/Core/src/Platform/Windows/RootNavigationView.cs
@sheiksyedm sheiksyedm marked this pull request as ready for review May 6, 2026 11:09
@dotnet dotnet deleted a comment from MauiBot May 6, 2026
@dotnet dotnet deleted a comment from MauiBot May 6, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 4 findings

See inline comments for details.

@dotnet dotnet deleted a comment from MauiBot May 6, 2026
@dotnet dotnet deleted a comment from MauiBot May 6, 2026
@dotnet dotnet deleted a comment from MauiBot May 6, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 3 findings

See inline comments for details.

Comment thread src/Core/src/Platform/Windows/RootNavigationView.cs
@MauiBot MauiBot added the s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates label May 6, 2026
Comment thread src/Core/src/Platform/Windows/RootNavigationView.cs
@kubaflo kubaflo merged commit eabe7b1 into dotnet:inflight/candidate May 7, 2026
33 of 37 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR7 milestone May 7, 2026
kubaflo added a commit that referenced this pull request May 7, 2026
…I test failures on candidate branch (#35340)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

Recreates #35312, which was accidentally merged into
`inflight/candidate` instead of `inflight/current`. The candidate-side
merge was reverted by #35339; this PR re-targets the same fix to
`inflight/current`.

Original author: @BagavathiPerumal

---

### Root cause

PR #30382 introduced AlwaysShowHeader
= false in the RootNavigationView constructor to fix Issue
#30254 (blank header space in the
Shell flyout). However, this was applied unconditionally across all
NavigationView display modes.

In the scenario from Issue2740 (FlyoutPage with FlyoutBehavior.Locked),
the PaneDisplayMode is Left, not LeftMinimal. Because AlwaysShowHeader
was set to false, WinUI's NavigationView collapsed the header whenever
the Header became temporarily null during page transitions. As a result,
toolbar items (e.g., the Switch button) were removed from the UI
Automation tree, causing the test to fail.


### Description of Change

The fix updates AlwaysShowHeader dynamically based on the current
PaneDisplayMode within the PaneDisplayModeChanged handler:

AlwaysShowHeader = PaneDisplayMode !=
NavigationViewPaneDisplayMode.LeftMinimal;

This ensures:
- AlwaysShowHeader = false only for LeftMinimal mode (Shell Flyout),
preserving the fix for Issue #30254.
- AlwaysShowHeader = true for all other modes (e.g., Left /
FlyoutBehavior.Locked), ensuring the header remains visible and toolbar
items stay accessible in the UI Automation tree.

Also added the updated snapshot for the
#30382.


### Issues Fixed

- Regression introduced by PR #30382

### Resaved Test snapshots

The below-mentioned test case was resaved because the ContentPage did
not have a title. Based on the fix, the currently generated image is the
expected image, so the test snapshot has been resaved accordingly,
similar to [#30382](#30382).

-  ModalPageBackgroundShouldBeTransparent

**Added snapshots:**

Additionally, the updated snapshot for
[#30382](#30382) has also been added
for the Mac and Windows platforms.

- ShouldHideHeaderWhenTitleEmpty
- ShouldShowHeaderWhenTitleNotEmpty

### Failure test cases

- VerifyFlyoutVerticalScrollModeDisabled
- VerifyFlyoutPageToolbarItemsRender
- ShouldFlyoutBeVisibleAfterMaximizingWindow
- FlyoutItemTextShouldDisplayProperly
- VerifyShellMenuItemsAlignedInRTL
- TestB43527UpdateTitle
- TitleUpdatesAfterShowingNonFlyoutPage
- WhenFlyoutIsLockedButtonsAreStillVisible 
- Issue2740Test
- NavigationPageTitle
- DoNotAccessDisposedCollectionView

Co-authored-by: BagavathiPerumal <93652794+BagavathiPerumal@users.noreply.github.com>
@dotnet dotnet deleted a comment from MauiBot May 7, 2026
@dotnet dotnet deleted a comment from MauiBot May 7, 2026
@MauiBot

MauiBot commented May 7, 2026

Copy link
Copy Markdown
Collaborator

🤖 AI Summary

👋 @BagavathiPerumal — new AI review results are available. Please review the latest session below.

📊 Review Session8e544f1 · fix-30254-Updated the comments. · 2026-05-07 21:45 UTC
🚦 Gate — Test Before & After Fix

Gate Result: ⚠️ SKIPPED

No tests were detected in this PR.

Recommendation: Add tests to verify the fix using the write-tests-agent.


🧪 UI Tests — Category Detection

Detected UI test categories: ViewBaseTests

🧪 UI Test Execution Results

FAILED — 0 passed, 1 failed, 0 skipped (platform: windows)

Category Result Tests Duration Notes
ViewBaseTests ❌ FAILED 104/115 (11 ❌) 1235.5s exit code 1, names truncated
Show 4 of 104 passed test name(s) — stdout was truncated, full list in build log

ViewBaseTests

  • VisualTransform_ScaleXWithShadow (5 s)
  • VisualTransform_ScaleY (4 s)
  • VisualTransform_ScaleYWithAnchorXAndRotationY (6 s)
  • VisualTransform_ScaleYWithShadow (5 s)

Failures here are informational only — they do not block the gate or affect try-fix candidate scoring.

ℹ️ This section was reconstructed from the build artifact (35312 build) after the run completed.


🔍 Regression Cross-Reference

🔍 Regression Cross-Reference

🟢 No regression risks detected. No labeled bug-fix PRs in the last 6 months touched the modified files.


🔍 Pre-Flight — Context & Validation

Pre-Flight: PR #35312

PR metadata

  • Title: [Windows] Fix Flyout/Locked mode header collapse regression causing UI test failures on candidate branch
  • Author: BagavathiPerumal
  • Base: dotnet/maui:inflight/candidate @ faf4d2f9
  • Head: BagavathiPerumal/maui:fix-30254-regression @ 8e544f16
  • Status: MERGED (2026-05-07) — milestone .NET 10 SR7
  • Labels: platform/windows, area-controls-shell, area-testing, s/agent-reviewed, s/agent-changes-requested, s/agent-fix-pr-picked
  • Size: 11 additions / 0 deletions across 6 files (1 code file + 5 snapshot PNGs)

Problem statement

PR #30382 fixed Issue #30254 (blank header space in the Shell flyout) by setting
AlwaysShowHeader = false unconditionally in the RootNavigationView constructor.
However, that change applies across all WinUI NavigationView PaneDisplayMode
values, not just LeftMinimal (the mode used by Shell flyout).

In FlyoutPage with FlyoutBehavior.Locked (PaneDisplayMode = Left), WinUI
collapses the header whenever the bound Header property becomes temporarily
null during a page transition. With AlwaysShowHeader=false, the collapse
happens; without ever re-expanding when Header is set again, leaving toolbar
items (e.g., a Switch button used by Issue 2740 tests) absent from the UI
Automation tree. This caused a chain of regressions across many UI tests
(VerifyFlyoutPageToolbarItemsRender, Issue2740Test, WhenFlyoutIsLockedButtonsAreStillVisible,
NavigationPageTitle, etc.).

The fix

Single line added to PaneDisplayModeChanged:

AlwaysShowHeader = PaneDisplayMode != NavigationViewPaneDisplayMode.LeftMinimal;

Plus an extensive comment block documenting why each mode is safe:

Touched code surface

  • src/Core/src/Platform/Windows/RootNavigationView.cs (+11 / -0; pure additions)
  • 5 snapshot PNGs under TestCases.WinUI.Tests and TestCases.Mac.Tests for
    ShouldHideHeaderWhenTitleEmpty, ShouldShowHeaderWhenTitleNotEmpty,
    ModalPageBackgroundShouldBeTransparent.

Risk surface

  • Single Windows-only file; no public API change; no behavior change on
    Android/iOS/MacCatalyst.
  • Risk concentrated in: do other modes (Auto, LeftCompact) regress?
    Looking at the rest of the file, neither is used by MAUI's RootNavigationView
    flow; PaneDisplayMode is set explicitly from the initial constructor
    (LeftMinimal) and from the FlyoutPage handler (which sets Left for
    Locked, LeftMinimal for non-locked) and from Shell.
  • Snapshot updates are sympathetic to the new (correct) behavior.

Gate status

SKIPPED — this PR adds no new tests; it re-enables a suite of existing failing
tests by fixing the regression and re-saves snapshots. A reviewer suggestion
to add a regression-targeted unit/UI test is reasonable but not blocking.

Recommended candidate alternatives to explore

  1. Restrict the toggle even more conservatively — only flip back to true for
    Left (and keep false for Auto/LeftCompact) so we minimize surface.
  2. Drop AlwaysShowHeader=false from the constructor entirely and rely on the
    Header=null + HeaderContent.Visibility binding to collapse the empty
    header.
  3. Move the assignment into UpdateHeaderVisibility() (closer to where the
    collapse logic lives) for cohesion.
  4. Force Header = Toolbar in the Left branch of UpdateToolbarPlacement
    to defend against transient Header=null rather than touching
    AlwaysShowHeader at all.

🔧 Fix — Analysis & Comparison

Try-Fix Summary (aggregate)

Four independent candidate fixes were generated, each loaded with a distinct
expert-reviewer dimension to maximize diversity.

Candidate Dimension One-liner Tests pass?
try-fix-1 handler-patterns Move the toggle into UpdateHeaderVisibility() for cohesion ✅ Yes (functionally equivalent to pr)
try-fix-2 regression-patterns Pin true only for Left mode, leave others at false ⚠️ Mostly — risk at LeftCompact/Auto widths
try-fix-3 platform-specifics (WinUI) Drop AlwaysShowHeader=false entirely; rely on Header=null ❌ Re-opens Issue #30254
try-fix-4 layout/UI-tree-stability Stop transient-null Header assignments in non-LeftMinimal ❌ Localized change misses the actual null source

The PR's existing fix (AlwaysShowHeader = PaneDisplayMode != LeftMinimal)
sits between try-fix-1 (same outcome, lighter touch) and try-fix-2 (narrower,
brittler). It is more defensive than try-fix-2 and lighter than try-fix-1,
which is why we recommend keeping the PR fix.


📋 Report — Final Recommendation

Phase 3 — Comparative Report

Candidates evaluated

  1. pr — the merged PR fix exactly as submitted by @BagavathiPerumal.
  2. pr-plus-reviewerpr plus the reviewer's nit (DRY the constructor).
  3. try-fix-1 — relocate toggle into UpdateHeaderVisibility().
  4. try-fix-2 — pin true only for Left mode.
  5. try-fix-3 — drop AlwaysShowHeader=false entirely.
  6. try-fix-4 — stabilize transient-null Header assignments.

Scoring matrix

Criterion (weight) pr pr-plus-reviewer try-fix-1 try-fix-2 try-fix-3 try-fix-4
Resolves Issue2740 regression suite (×3) ⚠️
Preserves PR #30382 fix for #30254 (×3)
Robust to LeftCompact/Auto width promotion (×2) ⚠️
Surgical / minimal blast radius (×2) ⚠️ ⚠️
Code cohesion / single source of truth (×1) ⚠️ ⚠️ ⚠️
Documented rationale in code (×1) ⚠️ ⚠️ ⚠️ ⚠️

Ranking

Tier 1 — Tests pass + correct

  1. pr — proven by the actual CI run that merged it. Surgical, well-commented, covers all WinUI mode promotions.
  2. pr-plus-reviewer — functionally identical to pr plus a small DRY improvement in the constructor. No measurable runtime difference.
  3. try-fix-1 — equivalent outcome via UpdateHeaderVisibility(). Slightly higher blast radius and weaker comment trail. Acceptable but less surgical than pr.

Tier 2 — Tests partially pass

  1. try-fix-2 — passes the named failing tests but leaves LeftCompact/Auto width promotions exposed.

Tier 3 — Tests fail (per the rule, must rank below all passing candidates)

  1. try-fix-4 — wrong location; doesn't address the actual transient-null source.
  2. try-fix-3 — re-opens Issue (Windows) Shell.FlyoutBehavior="Flyout" forces the title height space above the tab bar even if the page title is empty #30254.

Winner: pr

The PR's fix is the right approach. pr-plus-reviewer is essentially a tie
on correctness; we only prefer pr because:

  • It's already merged and CI-validated end-to-end (the strongest possible
    evidence).
  • The reviewer's nit is genuinely a nit — the constructor's literal false
    is "right by virtue of the line above it setting PaneDisplayMode = LeftMinimal", which is unlikely to change.
  • Picking pr-plus-reviewer would require a follow-up commit for negligible
    benefit.

The reviewer feedback (test coverage, DRY constructor) should be filed as a
follow-up issue, not a blocker.

Reviewer-feedback follow-up suggestions (non-blocking)

  1. Maintainability: in a future cleanup, replace
    AlwaysShowHeader = false; (line 29) with the same expression used in
    PaneDisplayModeChanged, so the rule lives in one place.
  2. Test coverage: add a focused UI test that toggles FlyoutBehavior
    between Flyout and Locked while asserting toolbar items stay in the
    automation tree, to catch this exact regression class earlier.

@MauiBot MauiBot added s/agent-review-incomplete and removed s/agent-changes-requested AI agent recommends changes - found a better alternative or issues labels May 7, 2026
@PureWeen PureWeen added t/bug Something isn't working i/regression This issue described a confirmed regression on a currently supported version area-controls-flyoutpage FlyoutPage labels May 15, 2026
PureWeen added a commit that referenced this pull request May 18, 2026
3 parallel reviewers (different models) ran against this PR; consensus findings:

A) [3/3 ❌] pr-review/SKILL.md had stale model IDs (claude-sonnet-4.6 +
   gemini-3-pro-preview). Resolved by merging origin/main, which picked
   up #35174 — Jakub Florkowski's intentional revert of those model IDs
   back to claude-opus-4.7 + gpt-5.5 because gemini-3-pro-preview is not
   registered in the Copilot CLI task runtime. The pr-review/SKILL.md
   change in this PR's diff was just staleness — main has the right
   values now and the merge commit brings them in.

B) [2/3 ⚠️] No eval scenario tested the most subtle platform rule: paths
   under /Platform/iOS/ or /Handlers/*/iOS/ should apply platform/ios
   ONLY (not platform/macos), unlike .ios.cs file extension which applies
   BOTH. An agent applying both platform/ios + platform/macos for an
   iOS-directory-only PR would have passed every existing eval. Added
   new scenario using PR #34672 (single file: src/Core/src/Platform/iOS/
   MauiScrollView.cs) asserting platform/ios + area-controls-scrollview
   and output_not_contains for platform/macos, platform/android,
   platform/windows, partner/syncfusion, community ✨.

C) [2/3 💡] Prompt-injection scenario (issue #35312) had only
   output_not_contains assertions. An agent that completely noops or
   returns empty output would pass. Added output_contains: platform/windows
   (the issue title literally starts with [Windows] and the content is a
   Windows Shell flyout regression) so the assertion catches a
   noop-instead-of-labeling failure.

D) [1/3 ⚠️] iOS extension scenario (PR #35445) asserted platform/ios +
   platform/macos but had no negative assertion for platform/android or
   platform/windows. Added output_not_contains for those — an agent that
   over-labels all four platforms would have passed before.

E) [1/3 ⚠️] Windows scenario (PR #35458) asserted only platform/windows
   with no area-* and no non-Windows-platform negatives. Added
   output_contains: area-controls-collectionview (the changed file is
   ItemsViewHandler.Windows.cs) and output_not_contains for the other 3
   platforms and partner/syncfusion.

Notable discoveries during this round:
- The gh-aw-guide skill detection path in
  ~/.agents/skills/generic-adversarial-pr-reviewer/SKILL.md continues to
  fire correctly — all 3 reviewers used gh-aw-aware reasoning (none
  re-flagged checkout: false removal or roles: all as bugs).
- Eval scenario count increased from 20 → 21 (new iOS-dir-only scenario).
- lock.yml unchanged (no workflow.md frontmatter changes); only eval.yaml
  modified in this commit.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kubaflo kubaflo added s/agent-changes-requested AI agent recommends changes - found a better alternative or issues and removed s/agent-review-incomplete labels May 20, 2026
github-actions Bot pushed a commit that referenced this pull request May 25, 2026
…I test failures on candidate branch (#35312)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Root cause

PR #30382 introduced AlwaysShowHeader
= false in the RootNavigationView constructor to fix Issue
#30254 (blank header space in the
Shell flyout). However, this was applied unconditionally across all
NavigationView display modes.
 
In the scenario from Issue2740 (FlyoutPage with FlyoutBehavior.Locked),
the PaneDisplayMode is Left, not LeftMinimal. Because AlwaysShowHeader
was set to false, WinUI’s NavigationView collapsed the header whenever
the Header became temporarily null during page transitions. As a result,
toolbar items (e.g., the Switch button) were removed from the UI
Automation tree, causing the test to fail.


### Description of Change
 
The fix updates AlwaysShowHeader dynamically based on the current
PaneDisplayMode within the PaneDisplayModeChangedhandler:
 
AlwaysShowHeader = PaneDisplayMode !=
NavigationViewPaneDisplayMode.LeftMinimal;
This ensures:
• AlwaysShowHeader = false only for LeftMinimal mode (Shell Flyout),
preserving the fix for Issue #30254.
• AlwaysShowHeader = true for all other modes (e.g., Left /
FlyoutBehavior.Locked), ensuring the header remains visible and toolbar
items stay accessible in the UI Automation tree.

Also added the updated snapshot for the
#30382.


### Issues Fixed

- Regression introduced by PR #30382

### Resaved Test snapshots

The below-mentioned test case was resaved because the ContentPage did
not have a title. Based on the fix, the currently generated image is the
expected image, so the test snapshot has been resaved accordingly,
similar to [#30382](#30382).

-  ModalPageBackgroundShouldBeTransparent

**Added snapshots:**

Additionally, the updated snapshot for
[#30382](#30382) has also been added
for the Mac and Windows platforms.

- ShouldHideHeaderWhenTitleEmpty
- ShouldShowHeaderWhenTitleNotEmpty

### Failure test cases

- 	VerifyFlyoutVerticalScrollModeDisabled
- 	VerifyFlyoutPageToolbarItemsRender
- 	ShouldFlyoutBeVisibleAfterMaximizingWindow
- 	FlyoutItemTextShouldDisplayProperly
- 	VerifyShellMenuItemsAlignedInRTL
- 	TestB43527UpdateTitle
- 	TitleUpdatesAfterShowingNonFlyoutPage
- 	WhenFlyoutIsLockedButtonsAreStillVisible 
- 	Issue2740Test
- 	NavigationPageTitle
- 	DoNotAccessDisposedCollectionView
@PureWeen PureWeen mentioned this pull request Jun 2, 2026
PureWeen added a commit that referenced this pull request Jun 2, 2026
## What's Coming

.NET MAUI inflight/candidate introduces significant improvements across
all platforms with focus on quality, performance, and developer
experience. This release includes 85 commits with various improvements,
bug fixes, and enhancements.


## Button
- [Android, iOS] Button: Fix VisualState properties not restored when
leaving custom state by @BagavathiPerumal in
#33346
  <details>
  <summary>🔧 Fixes</summary>

- [Button VisualStates do not
work](#19690)
  </details>

## CollectionView
- Fix CollectionView grid spacing updates for first row and column by
@KarthikRajaKalaimani in #34527
  <details>
  <summary>🔧 Fixes</summary>

- [[MAUI] I2_Vertical grid for horizontal Item Spacing and Vertical Item
Spacing - horizontally updating the spacing only applies to the second
column](#34257)
  </details>

- CarouselView: Fix cascading PositionChanged/CurrentItemChanged events
on collection update by @praveenkumarkarunanithi in
#31275
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] CurrentItemChangedEventArgs and PositionChangedEventArgs
Not Working Properly in
CarouselView](#29529)
  </details>

- [Windows] Fixed ItemSpacing doesn't work in Carousel View by
@SubhikshaSf4851 in #30014
  <details>
  <summary>🔧 Fixes</summary>

- [ItemSpacing on CarouselView is not applied on
Windows.](#29772)
  </details>

- Fix CollectionView not scrolling to top on iOS status bar tap by
@jfversluis in #34687
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] UICollectionView ScrollToTop does not
work](#19866)
  </details>

- [iOS] Fixed CollectionView Scroll Jitter for TextType HTML Labels by
@SubhikshaSf4851 in #34383
  <details>
  <summary>🔧 Fixes</summary>

- [CollectionView scrolling is jittery when ItemTemplate contains Label
with TextType="Html" in .NET
10](#33065)
  </details>

- Fix CollectionView Header is not visible when ItemsSource is not set
and an EmptyView is set in iOS, Mac platform by @KarthikRajaKalaimani in
#34989
  <details>
  <summary>🔧 Fixes</summary>

- [CollectionView Header is not visible when ItemsSource is not set and
EmptyView is set in iOS, Mac
platform](#34897)
  </details>

- [Android] Fix CollectionView EmptyView not displayed correctly by
@KarthikRajaKalaimani in #34956
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] CollectionView - EmptyView not displayed
correctly](#34861)
  </details>

- [iOS] Fix CollectionView ScrollOffset not resetting when ItemsSource
changes by @SyedAbdulAzeemSF4852 in
#34488
  <details>
  <summary>🔧 Fixes</summary>

- [[IOS] CollectionView ScrollOffset does not reset when the ItemSource
is changed in iOS.](#26366)
- [Re-enable Issue7993 test on iOS/Catalyst - CollectionView scroll
position not reset when updating
ItemsSource](#33500)
  </details>

- [Revert] [iOS] Fixed CollectionView Scroll Jitter for TextType HTML
Labels by @SubhikshaSf4851 in #35341

## Core Lifecycle
- [Android] Fix NRE in ContainerView when Android Context is null during
lifecycle transition by @rmarinho in
#34901
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] NullReferenceException in NavigationRootManager.Connect
when mapping Window
content](#34900)
  </details>

## DateTimePicker
- [Android] Fix for TimePicker Dialog doesn't update the layout when
rotating the device with dialog open by @HarishwaranVijayakumar in
#31910
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] TimePicker Dialog doesn't update the layout when rotating
the device with dialog
open](#31658)
  </details>

- [Android, iOS] Fixed TimePicker FlowDirection Not Applied Across
Platforms by @Dhivya-SF4094 in #30369
  <details>
  <summary>🔧 Fixes</summary>

- [TimePicker FlowDirection Not Working on All
Platforms](#30192)
  </details>

- [Windows] Fixed TimePicker CharacterSpacing issue by @SubhikshaSf4851
in #30533
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] TimePicker CharacterSpacing Property Not Working on
Windows](#30199)
  </details>

- [MacCatalyst] Fix DatePicker Opened/Closed events not being raised by
@SubhikshaSf4851 in #34970
  <details>
  <summary>🔧 Fixes</summary>

- [[MacCatalyst] DatePicker Opened and Closed events are not raised on
Mac platform](#34848)
  </details>

## Dialogalert
- [Android] Fix AlertDialog, ActionSheet, and Prompt render with
Material 2 styles when Material 3 is enabled by @HarishwaranVijayakumar
in #35121
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] AlertDialog, ActionSheet, and Prompt render with Material 2
styles when Material 3 is
enabled](#35119)
  </details>

## Docs
- docs: Add UITesting-Guide, ReleasePlanning, and ReleaseProcess to
docs/README.md index by @PureWeen in
#35195

- docs: Fix hardcoded path and add library overview in Essentials.AI
README by @PureWeen in #35194

- docs: Update branch reference from net10.0 to net11.0 in
DEVELOPMENT.md by @PureWeen in #35193

## Drawing
- Fix Path Rendering Issue Inside StackLayout When Margin Is Set by
@Shalini-Ashokan in #28071
  <details>
  <summary>🔧 Fixes</summary>

- [Path does not render if it has
Margin](#13801)
  </details>

- Fixed FlowDirection property not working on Drawable control and
GraphicsView by @Dhivya-SF4094 in
#34557
  <details>
  <summary>🔧 Fixes</summary>

- [[Android, Windows, iOS, macOS] FlowDirection property not working on
BoxView Control](#34402)
  </details>

- [iOS & Mac] Fix image tile misalignment in GraphicsView ImagePaint by
@SubhikshaSf4851 in #34935
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Image resized with ResizeMode.Fit is not rendered correctly in
GraphicsView](#34755)
  </details>

- Fix Shadow does not honour Styles by @KarthikRajaKalaimani in
#35081
  <details>
  <summary>🔧 Fixes</summary>

- [Shadow does not honour
Styles](#19560)
  </details>

## Entry
- [iOS/macCatalyst] Fix Entry and Editor BackgroundColor reset when set
to null by @Shalini-Ashokan in #34741
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS, Maccatalyst] Entry & Editor BackgroundColor not reset to
Null](#34611)
  </details>

- [Windows] Fix password Entry crash when setting text on empty field by
@praveenkumarkarunanithi in #33891
  <details>
  <summary>🔧 Fixes</summary>

- [[WinUI] Password Obfuscation causes unhandled
crash](#33334)
  </details>

## Essentials
- [Essentials] Use mean sea level altitude on Android API 34+ by
@KitKeen in #35097
  <details>
  <summary>🔧 Fixes</summary>

- [Add support for MslAltitudeMeters in Essentials Geolocation on
Android](#27554)
  </details>

## Flyout
- Fixed Flyout Not Displayed on Android When FlyoutWidth Is Set Only for
Desktop via OnIdiom by @NanthiniMahalingam in
#29028
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] FlyoutWidth with OnIdiom shows no
flyout](#13243)
  </details>

- Revert "[Windows] Fix Flyout/Locked mode header collapse regression
causing UI test failures on candidate branch" by @kubaflo in
#35339

- Revert "Revert "[Windows] Fix Flyout/Locked mode header collapse
regression causing UI test failures on candidate branch"" by @kubaflo in
#35342

## Flyoutpage
- Fix [Android] Title of FlyOutPage is not updating anymore after
showing a NonFlyOutPage by @KarthikRajaKalaimani in
#34839
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Title of FlyOutPage is not updating anymore after showing a
NonFlyOutPage](#33615)
  </details>

## Label
- [iOS] Fix span Tap gesture on wrapped Label lines in iOS 26+ by
@SubhikshaSf4851 in #34640
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS]Span TapGestureRecognizer does not work on the second line of
the span, if the span is wrapped to the next
line](#34504)
  </details>

## Layout
- Fixed Stacklayout is not rendered when clip is applied and StackLayout
placed child to the Border control in iOS/ Mac platform by
@KarthikRajaKalaimani in #33330
  <details>
  <summary>🔧 Fixes</summary>

- [[Mac/iOS] StackLayout fails to render content while applying Clip,
and the layout is placed inside a Border with Background in .NET
MAUI](#33241)
  </details>

## Map
- Fix Changing Location on a Pin does nothing by @NirmalKumarYuvaraj in
#30201
  <details>
  <summary>🔧 Fixes</summary>

- [[Maps] [Regression from Xamarin.Forms.Maps] Changing Location on a
Pin does nothing](#12916)
  </details>

## Mediapicker
- [iOS] Fix HEIC images picked via PickPhotosAsync not displayed by
@HarishwaranVijayakumar in #34954
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] [Regression] HEIC images picked via PickPhotosAsync not
displayed](#34953)
  </details>

- [Android] Fix MediaPicker.PickPhotosAsync UnauthorizedAccessException
on API 28 and below by @HarishwaranVijayakumar in
#34981
  <details>
  <summary>🔧 Fixes</summary>

- [MediaPicker.PickPhotos fails to modify image, tries to load original
source, fails to load source on Android
9.0](#34889)
  </details>

## Pages
- [iOS] Fix ContentPage with ToolbarItem Clicked event leaks when
presented as modal page by @devanathan-vaithiyanathan in
#35009
  <details>
  <summary>🔧 Fixes</summary>

- [ContentPage with ToolbarItem Clicked event leaks when presented as
modal page](#34892)
  </details>

## Platform
- [Android] Fix OnBackButtonPressed not invoked for Shell by
@Dhivya-SF4094 in #35150
  <details>
  <summary>🔧 Fixes</summary>

- [On Screen Back Button Does Not Fire OnBackButtonPressed in
Android](#9095)
  </details>

## RadioButton
- Fix RadioButtonGroup not working with ContentView by @Dhivya-SF4094 in
#34781
  <details>
  <summary>🔧 Fixes</summary>

- [RadioButtonGroup not working with
ContentView](#34759)
  </details>

- [Windows] Fix for RadioButton BorderColor and BorderWidth not updated
at runtime by @SyedAbdulAzeemSF4852 in
#28335
  <details>
  <summary>🔧 Fixes</summary>

- [RadioButton Border color not working for focused visual
state](#15806)
  </details>

- [iOS] Fix RadioButton BackgroundColor bleeding outside CornerRadius by
@SyedAbdulAzeemSF4852 in #34844
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] RadioButton BackgroundColor bleeds outside
CornerRadius](#34842)
  </details>

## SafeArea
- [iOS] Fix stale bottom safe area after changing SafeAreaEdges with
keyboard open by @praveenkumarkarunanithi in
#35083
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] ContentPage bottom has white space after changing SafeAreaEdges
while keyboard is open](#34846)
  </details>

## ScrollView
- [Windows] Fix Preserve ScrollView offsets when Orientation changes to
Neither by @SubhikshaSf4851 in #34827
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] ScrollView offsets do not preserve when Orientation changes
to Neither](#34671)
  </details>

## Searchbar
- [iOS] Fix SearchBar unexpected left margin in iPad windowed mode on 26
Version by @SubhikshaSf4851 in #34704
  <details>
  <summary>🔧 Fixes</summary>

- [in iPad windowed mode SearchBar adds left margin equivaltent to
SafeAreaInsets when placed inside
grid](#34551)
  </details>

## Shell
- [Windows] Fix for Shell.FlyoutBehavior="Flyout" forces the title
height space above the tab bar even if the page title is empty by
@BagavathiPerumal in #30382
  <details>
  <summary>🔧 Fixes</summary>

- [(Windows) Shell.FlyoutBehavior="Flyout" forces the title height space
above the tab bar even if the page title is
empty](#30254)
  </details>

- Fix Shell flyout items scrolling behind FlyoutHeader on iOS by @Qythyx
in #34936
  <details>
  <summary>🔧 Fixes</summary>

- [Shell flyout items scroll behind FlyoutHeader on
iOS](#34925)
  </details>

- [iOS, Mac] Fix Shell.CurrentState.Location stale in OnNavigated after
GoToAsync by @Vignesh-SF3580 in
#34880
  <details>
  <summary>🔧 Fixes</summary>

- [Shell.OnNavigated not called for route
navigation](#34662)
  </details>

- [iOS26]Fix
BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate UITest
fails by @devanathan-vaithiyanathan in
#34890
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS 26] BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNavigate
test fails with
TimeoutException](#34771)
  </details>

- [iOS] Fix Shell page memory leak when using TitleView with x:Name by
@Shalini-Ashokan in #35082
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Title view memory
leak](#34975)
  </details>

- [Material 3] Fix Material 2 color flash in AppBar when switching tabs
for the first time by @Dhivya-SF4094 in
#35117
  <details>
  <summary>🔧 Fixes</summary>

- [Material 3: AppBar briefly displays Material 2 colors when switching
tabs for the first time](#35116)
  </details>

- [Android] Fix Shell/TabbedPage "More" BottomSheet uses hard-coded M2
colors when Material3 is enabled by @HarishwaranVijayakumar in
#35129
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Shell/TabbedPage "More" BottomSheet uses hard-coded M2
colors when Material3 is
enabled](#35127)
  </details>

- [Android] Shell: Fix top-tab unselected text visibility in Material 3
light theme by @SyedAbdulAzeemSF4852 in
#35128
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Shell top-tab unselected text appears too faint in Material
3 light theme](#35125)
  </details>

- Fix Shell.Items.Clear() memory leak by disconnecting child handlers on
removal (#34898) by @Shalini-Ashokan in
#35031
  <details>
  <summary>🔧 Fixes</summary>

- [Shell.Items.Clear() does not disconnect handlers
correctly](#34898)
  </details>

- [iOS&Mac] Fix Shell SearchHandler Query update on Initial load by
@SubhikshaSf4851 in #35008
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS&Mac] Shell SearchHandler Query not shown in search bar on
initial load](#35005)
  </details>

## SwipeView
- [iOS,MacCatalyst] Fix for SwipeView.Open() throwing an
ArgumentException on the second programmatic call by @BagavathiPerumal
in #34982
  <details>
  <summary>🔧 Fixes</summary>

- [[net 11.0][iOS,MacCatalyst] SwipeView.Open() throws ArgumentException
on second programmatic
call](#34917)
  </details>

- [Android/iOS] Fix SwipeItem visibility change causing double command
execution in Execute mode by @praveenkumarkarunanithi in
#35087
  <details>
  <summary>🔧 Fixes</summary>

- [Changing visibility on an SwipeItem causes multiple items to be
executed](#7580)
  </details>

## Switch
- [iOS] Fix Switch ThumbColor reset on iOS 26+ theme changes. by
@Shalini-Ashokan in #33953
  <details>
  <summary>🔧 Fixes</summary>

- [Switch ThumbColor not Initialized Using VisualStateManager on iOS
Device](#33783)
- [I9-On macOS 26.2, the "Animate scroll" button is white by default on
iOS and Maccatalyst
platforms.](#33767)
  </details>

## TabbedPage
- [Windows] TabbedPage: Refresh layout when NavigationView size changes
by @BagavathiPerumal in #26217
  <details>
  <summary>🔧 Fixes</summary>

- [TabbedPage - ScrollView not allowing scrolling when it
should](#26103)
- [TabbedPage App on resize hides page bottom
content](#11402)
- [Grid overflows child ContentPage of parent TabbedPage on initial load
and when resizing on
Windows](#20028)
  </details>

- [Android] Material 3 Fixed BottomNavigationView overflowing in Tabbed
page by @NirmalKumarYuvaraj in #35064
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Material3 - TabbedPage bottom tabs overflowing the
contents](#35063)
  </details>

- [Windows] Fix for Multiple Tabs Being Selected in WinUI TabbedPage by
@SyedAbdulAzeemSF4852 in #33312
  <details>
  <summary>🔧 Fixes</summary>

- [WinUI TabbedPage can have multiple tabs
selected](#31799)
  </details>

## Theming
- [iOS] Fix StaticResource Hot Reload crash on iOS by @StephaneDelcroix
in #35020
  <details>
  <summary>🔧 Fixes</summary>

- [The maui app quit and no errors in error list after editing
ResourceDictionary XAML file on iOS Simulator with MAUI SR6
10.0.60](#35018)
  </details>

## Toolbar
- [Windows] Fix for CS1061 build error caused by missing
HasMenuBarContent property in MauiToolbar by @BagavathiPerumal in
#35040

## Tooling
- Fix VisualStateGroups duplicate name crash with implicit styles
(#34716) by @StephaneDelcroix in
#34719
  <details>
  <summary>🔧 Fixes</summary>

- [SourceGen: VisualStateManager.VisualStateGroups causes 'Names must be
unique' at startup](#34716)
  </details>

## WebView
- Refactor the HybridWebView and properly support complex parameters by
@mattleibow in #32491

- [Android] Fix WebView scrolling inside ScrollView by @Shalini-Ashokan
in #33133
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] WebView's content does not scroll when placed inside a
ScrollView](#32971)
  </details>


<details>
<summary>🔧 Infrastructure (1)</summary>

- [Windows] Fix Narrator announcing ContentView children twice when
Description is set by @praveenkumarkarunanithi in
#33979
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] SemanticProperties.Description announced twice when set on
focusable container cell (Label
inside)](#33373)
  </details>

</details>

<details>
<summary>🧪 Testing (14)</summary>

- [Testing] SafeArea Feature Matrix Test Cases for ContentPage by
@TamilarasanSF4853 in #34877
- [Windows] Fix CollectionView ScrollTo related test cases failed in CI
by @HarishwaranVijayakumar in #34907
  <details>
  <summary>🔧 Fixes</summary>

- [[Testing][Windows]CollectionView ScrollTo related test cases failed
in CI](#34772)
  </details>
- [Testing] Fixed Build error on inflight/ candidate PR 35234 by
@HarishKumarSF4517 in #35241
- Fix CI for
ValidateKeyboardRuntime_SwitchContainerToSoftInput_WhileKeyboardOpen
test failure in May 4th Candidate by @devanathan-vaithiyanathan in
#35307
- [Windows] Fix Flyout/Locked mode header collapse regression causing UI
test failures on candidate branch by @BagavathiPerumal in
#35312
- [iOS/macCatalyst] [Candidate Fix] Editor shadow and theme regression
caused by BackgroundColor reset on initial handler connection by
@Shalini-Ashokan in #35343
- [Testing] Fixed UI test image failure in PR 35234 - [30/03/2026]
Candidate - 1 by @HarishKumarSF4517 in
#35325
- [iOS] Fix ShellFeatureMatrix test failures on candidate branch by
@Vignesh-SF3580 in #35346
- [Windows] Fix Issue29529VerifyPreviousPositionOnInsert test failure on
candidate branch by @praveenkumarkarunanithi in
#35398
- [Android] [Candidate Fix] Shell: Fix handler disconnect timing to
preserve WebView navigation and memory leak fix by @Shalini-Ashokan in
#35417
- [Testing]Revert 'Fix Preserve ScrollView offsets when Orientation
changes to Neither' by @TamilarasanSF4853 in
#35412
- [Windows] Fix VerifyAllIndicatorDotsShowShadowsWhenIndicatorSize test
failure on candidate branch by @praveenkumarkarunanithi in
#35458
- [Testing] Fixed test failure in PR 35234 - [05/08/2026] Candidate by
@TamilarasanSF4853 in #35362
- [Testing] Fixed test failure in PR 35234 - [05/04/2026] Candidate - 3
by @TamilarasanSF4853 in #35639

</details>

<details>
<summary>📦 Other (6)</summary>

- [UIKit] Avoid useless measure invalidation propagation cycles by
@albyrock87 in #33459
- BindableObject property access micro-optimizations by @albyrock87 in
#33584
- Extract filename from DisplayName and add extension if missing by
@mattleibow in #35050
- [core] Add keyed-DI screenshot extensibility for 3rd-party platform
backends by @Redth in #35096
  <details>
  <summary>🔧 Fixes</summary>

- [`ViewExtensions.CaptureAsync(IView)` and `IPlatformScreenshot` need
extensibility for third-party platform
backends](#34266)
  </details>
- Fix MainThread throwing on custom platform backends by @Redth in
#35070
  <details>
  <summary>🔧 Fixes</summary>

- [`MainThread.BeginInvokeOnMainThread` throws on custom platform
backends - Common UI-thread marshaling pattern crashes; `Dispatcher`
works but isn't the documented/recommended
path](#34101)
  </details>
- Tests: Add 11 missing UnitConverters unit tests by @PureWeen in
#35191

</details>

<details>
<summary>📝 Issue References</summary>

Fixes #7580, Fixes #9095, Fixes #11402, Fixes #12916, Fixes #13243,
Fixes #13801, Fixes #15806, Fixes #19560, Fixes #19690, Fixes #19866,
Fixes #20028, Fixes #26103, Fixes #26366, Fixes #27554, Fixes #29529,
Fixes #29772, Fixes #30192, Fixes #30199, Fixes #30254, Fixes #31658,
Fixes #31799, Fixes #32971, Fixes #33065, Fixes #33241, Fixes #33334,
Fixes #33373, Fixes #33500, Fixes #33615, Fixes #33767, Fixes #33783,
Fixes #34101, Fixes #34257, Fixes #34266, Fixes #34402, Fixes #34504,
Fixes #34551, Fixes #34611, Fixes #34662, Fixes #34671, Fixes #34716,
Fixes #34755, Fixes #34759, Fixes #34771, Fixes #34772, Fixes #34842,
Fixes #34846, Fixes #34848, Fixes #34861, Fixes #34889, Fixes #34892,
Fixes #34897, Fixes #34898, Fixes #34900, Fixes #34917, Fixes #34925,
Fixes #34953, Fixes #34975, Fixes #35005, Fixes #35018, Fixes #35063,
Fixes #35116, Fixes #35119, Fixes #35125, Fixes #35127

</details>

**Full Changelog**:
main...inflight/candidate
@PureWeen PureWeen modified the milestones: .NET 10 SR7, .NET 10 SR8 Jun 11, 2026
Shalini-Ashokan pushed a commit to Shalini-Ashokan/maui that referenced this pull request Jun 15, 2026
…I test failures on candidate branch (dotnet#35312)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Root cause

PR dotnet#30382 introduced AlwaysShowHeader
= false in the RootNavigationView constructor to fix Issue
dotnet#30254 (blank header space in the
Shell flyout). However, this was applied unconditionally across all
NavigationView display modes.
 
In the scenario from Issue2740 (FlyoutPage with FlyoutBehavior.Locked),
the PaneDisplayMode is Left, not LeftMinimal. Because AlwaysShowHeader
was set to false, WinUI’s NavigationView collapsed the header whenever
the Header became temporarily null during page transitions. As a result,
toolbar items (e.g., the Switch button) were removed from the UI
Automation tree, causing the test to fail.


### Description of Change
 
The fix updates AlwaysShowHeader dynamically based on the current
PaneDisplayMode within the PaneDisplayModeChangedhandler:
 
AlwaysShowHeader = PaneDisplayMode !=
NavigationViewPaneDisplayMode.LeftMinimal;
This ensures:
• AlwaysShowHeader = false only for LeftMinimal mode (Shell Flyout),
preserving the fix for Issue dotnet#30254.
• AlwaysShowHeader = true for all other modes (e.g., Left /
FlyoutBehavior.Locked), ensuring the header remains visible and toolbar
items stay accessible in the UI Automation tree.

Also added the updated snapshot for the
dotnet#30382.


### Issues Fixed

- Regression introduced by PR dotnet#30382

### Resaved Test snapshots

The below-mentioned test case was resaved because the ContentPage did
not have a title. Based on the fix, the currently generated image is the
expected image, so the test snapshot has been resaved accordingly,
similar to [dotnet#30382](dotnet#30382).

-  ModalPageBackgroundShouldBeTransparent

**Added snapshots:**

Additionally, the updated snapshot for
[dotnet#30382](dotnet#30382) has also been added
for the Mac and Windows platforms.

- ShouldHideHeaderWhenTitleEmpty
- ShouldShowHeaderWhenTitleNotEmpty

### Failure test cases

- 	VerifyFlyoutVerticalScrollModeDisabled
- 	VerifyFlyoutPageToolbarItemsRender
- 	ShouldFlyoutBeVisibleAfterMaximizingWindow
- 	FlyoutItemTextShouldDisplayProperly
- 	VerifyShellMenuItemsAlignedInRTL
- 	TestB43527UpdateTitle
- 	TitleUpdatesAfterShowingNonFlyoutPage
- 	WhenFlyoutIsLockedButtonsAreStillVisible 
- 	Issue2740Test
- 	NavigationPageTitle
- 	DoNotAccessDisposedCollectionView
Dhivya-SF4094 pushed a commit to Dhivya-SF4094/maui that referenced this pull request Jun 15, 2026
…I test failures on candidate branch (dotnet#35312)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Root cause

PR dotnet#30382 introduced AlwaysShowHeader
= false in the RootNavigationView constructor to fix Issue
dotnet#30254 (blank header space in the
Shell flyout). However, this was applied unconditionally across all
NavigationView display modes.
 
In the scenario from Issue2740 (FlyoutPage with FlyoutBehavior.Locked),
the PaneDisplayMode is Left, not LeftMinimal. Because AlwaysShowHeader
was set to false, WinUI’s NavigationView collapsed the header whenever
the Header became temporarily null during page transitions. As a result,
toolbar items (e.g., the Switch button) were removed from the UI
Automation tree, causing the test to fail.


### Description of Change
 
The fix updates AlwaysShowHeader dynamically based on the current
PaneDisplayMode within the PaneDisplayModeChangedhandler:
 
AlwaysShowHeader = PaneDisplayMode !=
NavigationViewPaneDisplayMode.LeftMinimal;
This ensures:
• AlwaysShowHeader = false only for LeftMinimal mode (Shell Flyout),
preserving the fix for Issue dotnet#30254.
• AlwaysShowHeader = true for all other modes (e.g., Left /
FlyoutBehavior.Locked), ensuring the header remains visible and toolbar
items stay accessible in the UI Automation tree.

Also added the updated snapshot for the
dotnet#30382.


### Issues Fixed

- Regression introduced by PR dotnet#30382

### Resaved Test snapshots

The below-mentioned test case was resaved because the ContentPage did
not have a title. Based on the fix, the currently generated image is the
expected image, so the test snapshot has been resaved accordingly,
similar to [dotnet#30382](dotnet#30382).

-  ModalPageBackgroundShouldBeTransparent

**Added snapshots:**

Additionally, the updated snapshot for
[dotnet#30382](dotnet#30382) has also been added
for the Mac and Windows platforms.

- ShouldHideHeaderWhenTitleEmpty
- ShouldShowHeaderWhenTitleNotEmpty

### Failure test cases

- 	VerifyFlyoutVerticalScrollModeDisabled
- 	VerifyFlyoutPageToolbarItemsRender
- 	ShouldFlyoutBeVisibleAfterMaximizingWindow
- 	FlyoutItemTextShouldDisplayProperly
- 	VerifyShellMenuItemsAlignedInRTL
- 	TestB43527UpdateTitle
- 	TitleUpdatesAfterShowingNonFlyoutPage
- 	WhenFlyoutIsLockedButtonsAreStillVisible 
- 	Issue2740Test
- 	NavigationPageTitle
- 	DoNotAccessDisposedCollectionView
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-controls-flyoutpage FlyoutPage area-controls-shell Shell Navigation, Routes, Tabs, Flyout area-testing Unit tests, device tests i/regression This issue described a confirmed regression on a currently supported version platform/windows s/agent-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) t/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants