Skip to content

Fix iOS 26 Stepper overlap in landscape - #35374

Merged
kubaflo merged 5 commits into
dotnet:inflight/currentfrom
AdamEssenmacher:issue-35211
May 11, 2026
Merged

Fix iOS 26 Stepper overlap in landscape#35374
kubaflo merged 5 commits into
dotnet:inflight/currentfrom
AdamEssenmacher:issue-35211

Conversation

@AdamEssenmacher

Copy link
Copy Markdown
Contributor

Description of Change

Extends the existing iOS 26 UIStepper Liquid Glass workaround for landscape orientation.

On iOS 26.4, the stepper glass pill can render farther outside its logical UIKit bounds than the previous 20pt compensation covered, causing adjacent controls in horizontal layouts to appear inside the visible stepper pill. This updates the landscape-only compensation to 36pt, keeps the existing iOS 26+ and non-MacCatalyst guards, and refreshes only the affected iOS 26 landscape visual baseline.

No public API changes.

Validation performed:

  • Built and ran ManualTests on iOS 26.4.
  • Verified D Editor -> D10 in landscape; the 0 label is fully outside the stepper glass pill.
  • Rechecked the same ManualTests scenario on iOS 18.6; layout remains unchanged.
  • Ran the existing Issue34273 iOS visual tests on iPhone 11 Pro iOS 26.4:
    • Passed: 2, Failed: 0

Issues Fixed

Fixes #35211

dependabot Bot and others added 5 commits May 7, 2026 08:48
Updated [Magick.NET-Q8-AnyCPU](https://github.com/dlemstra/Magick.NET)
from 14.10.4 to 14.12.0.

<details>
<summary>Release notes</summary>

_Sourced from [Magick.NET-Q8-AnyCPU's
releases](https://github.com/dlemstra/Magick.NET/releases)._

## 14.12.0

### What's Changed
- Added `FixByteOrder` to the `DcmReadDefines` (#​1976)
- Added `IconWriteDefines`.

### Related changes in ImageMagick since the last release of Magick.NET:
- Correct bug in `Composite` when using `CopyAlpha` (#​1985)
- Fixed incorrect orientation of JPEG compressed TIFF images (#​1991)
- Heap-Buffer-Overflow write of single zero byte when parsing xml
(GHSA-cr67-pvmx-2pp2)
- Stack Overflow in DestroyXMLTree
(GHSA-fwvm-ggf6-2p4x)
- Out-of-Bounds read in sample operation
(GHSA-pcvx-ph33-r5vv)
- Stack Overflow via Recursive FX Expression Parsing
(GHSA-f4qm-vj5j-9xpw)
- Heap Buffer Overflow in ImageMagick MVG decoder
(GHSA-x9h5-r9v2-vcww)
- Heap overflow caused by integer overflow/wraparound in viff encoder on
32-bit builds
(GHSA-v67w-737x-v2c9)
- Stack-buffer-overflow in MNG encoder with oversized pallete
(GHSA-98cp-rj9f-6v5g)
- Integer overflow in despeckle operation causes heap buffer overflow on
32-bit builds
(GHSA-26qp-ffjh-2x4v)
- Off-by-One in MSL decoder could result in crash
(GHSA-5xg3-585r-9jh5)
- Heap buffer overflow when encoding JXL image with a 16-bit float
(GHSA-jvgr-9ph5-m8v4)
- Heap-use-after-free via XMP profile could result in a crash when
printing the values
(GHSA-r83h-crwp-3vm7)
- Heap buffer overflow (WRITE) in the YAML and JSON encoders
(GHSA-5592-p365-24xh)
- Heap out-of-bounds write in JP2 encoder
(GHSA-pwg5-6jfc-crvh)

### Library updates:
- ImageMagick 7.1.2-19 (2026-04-12)
- aom 3.13.3 (2026-04-02)
- openexr 3.4.9 (2026-04-03)
- freetype 2.14.3 (2026-03-22)
- gdk-pixbuf 2.44.6 (2026-03-31)
- harfbuzz 14.0.0 (2026-04-01)
- liblzma 5.8.3 (2026-04-31)
- libpng 1.6.56 (2026-03-25)

**Full Changelog**:
dlemstra/Magick.NET@14.11.1...14.12.0

## 14.11.1

### Related changes in ImageMagick since the last release of Magick.NET:
- Stack-buffer-overflow WRITE in InterpretImageFilename due to overflow
(GHSA-8793-7xv6-82cf)

### Library updates:
- ImageMagick 7.1.2-18 (2026-03-23)
- aom 3.13.2 (2026-03-19)
- openexr 3.4.7 (2026-03-15)
- harfbuzz 13.2.1 (2026-03-19)

**Full Changelog**:
dlemstra/Magick.NET@14.11.0...14.11.1

## 14.11.0

### What's Changed
- Added `DcmReadDefines`.

### Related changes in ImageMagick since the last release of Magick.NET:
- Access mode change for files created from 0666 to 0600
(ImageMagick/ImageMagick#8609)
- Heap-buffer-overflow in NewXMLTree could result in crash
(GHSA-gc62-2v5p-qpmp)

### Library updates:
- ImageMagick 7.1.2-17 (2026-03-16)
- openexr 3.4.6 (2026-03-01)
- freetype 2.14.2 (2026-03-01)
- harfbuzz 13.0.1 (2026-03-07)
- libxml2 2.15.2 (2026-03-03)

**Full Changelog**:
dlemstra/Magick.NET@14.10.4...14.11.0

Commits viewable in [compare
view](dlemstra/Magick.NET@14.10.4...14.12.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Magick.NET-Q8-AnyCPU&package-manager=nuget&previous-version=14.10.4&new-version=14.12.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/dotnet/maui/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…t#35333)

Bump OpenTelemetry packages to latest stable versions in the
maui-aspire-servicedefaults template:

- OpenTelemetry.Exporter.OpenTelemetryProtocol: 1.9.0 to 1.15.3
- OpenTelemetry.Extensions.Hosting: 1.9.0 to 1.15.3
- OpenTelemetry.Instrumentation.Http: 1.9.0 to 1.15.1
- OpenTelemetry.Instrumentation.Runtime: 1.9.0 to 1.15.1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This pull request updates the following dependencies

[marker]: <> (Begin:a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95)
## From https://github.com/dotnet/xharness
- **Subscription**:
[a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95](https://maestro.dot.net/subscriptions?search=a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95)
- **Build**:
[20260430.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=2964906)
([312724](https://maestro.dot.net/channel/2/github:dotnet:xharness/build/312724))
- **Date Produced**: May 1, 2026 7:05:11 AM UTC
- **Commit**:
[92962e5c46ac08a66ded4c5696209cc60f1a232f](dotnet/xharness@92962e5)
- **Branch**: [main](https://github.com/dotnet/xharness/tree/main)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [11.0.0-prerelease.26229.1 to 11.0.0-prerelease.26230.4][1]
     - Microsoft.DotNet.XHarness.CLI
     - Microsoft.DotNet.XHarness.TestRunners.Common
     - Microsoft.DotNet.XHarness.TestRunners.Xunit

[1]: dotnet/xharness@9d5a7e9...92962e5

[DependencyUpdate]: <> (End)


[marker]: <> (End:a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95)

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
> [!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!

## Description

Replaces `review-rules.md` (flat 345-line checklist) with a dimensional
expert review agent. Single source of truth for all review rules,
organized into 30 dimensions for per-dimension sub-agent evaluation.
Adds inline file:line PR comments alongside the existing wall-of-text
summary.

Extracted from 28k review comments across 5 maintainers via
[extraction-pipeline](https://github.com/dotnet/fsharp/blob/main/.github/agents/extraction-pipeline.md).
No functional code changes.

Recreated from dotnet#35062 on a dotnet/maui branch (originally opened from a
fork).

## What changed

**Before:** `review-rules.md` had 345 lines of flat rules. `code-review`
skill loaded them all into one context. Output was a single wall-of-text
PR comment.

**After:** Rules absorbed into `maui-expert-reviewer.md` as 30
dimensions with 200+ CHECK items. Each dimension runs as an independent
sub-agent with focused context. Output is inline file:line PR comments
via `inline-findings.json`.

## CI Flow

```
Review-PR.ps1 prompt:
  1. code-review → maui-expert-reviewer agent → inline-findings.json
  2. pr-review → Pre-Flight → Try-Fix → Report (sees findings, no duplication)

Posting:
  post-inline-review.ps1    → .json → GitHub file:line comments (NEW)
  post-ai-summary-comment.ps1 → {phase}/content.md → wall-of-text (existing)

CI: COMMENTS_VIA_FILE=true → agent writes .json, script posts
Local: agent writes .json, code-review posts directly via gh api
```

## Files

| Action | File | What |
|--------|------|------|
| **Add** | `agents/maui-expert-reviewer.md` | 30 dimensions, 200+
CHECKs, routing table |
| **Add** | `instructions/collectionview-{android,ios,windows}` |
Platform-isolated CV rules |
| **Add** |
`instructions/{handler-patterns,layout-system,performance-hotpaths,public-api,threading-async}`
| Domain-specific ambient guidance |
| **Add** | `scripts/post-inline-review.ps1` | Posts .json as GitHub PR
review |
| **Del** | `skills/code-review/references/review-rules.md` | Absorbed
into agent |
| **Mod** | `skills/code-review/SKILL.md` | Delegates to agent |
| **Mod** | `scripts/Review-PR.ps1` | Prompt + inline posting wiring |
| **Mod** | `eng/pipelines/ci-copilot.yml` | `COMMENTS_VIA_FILE` env var
|

---------

Co-authored-by: kubaflo <kubaflo@users.noreply.github.com>
Co-authored-by: T-Gro <46543583+T-Gro@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
Copilot AI review requested due to automatic review settings May 11, 2026 08:19
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35374

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35374"
@dotnet-policy-service dotnet-policy-service Bot added the community ✨ Community Contribution label May 11, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Hey there @@AdamEssenmacher! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed.

@jfversluis

Copy link
Copy Markdown
Member

/azp run maui-pr

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Updates the iOS 26+ UIStepper “Liquid Glass” layout compensation used by StepperHandler.GetDesiredSize so that, in landscape orientation on iOS (not MacCatalyst), adjacent controls no longer render visually inside the stepper’s glass pill overflow on iOS 26.4.

Changes:

  • Increase the landscape-only overflow compensation from 20pt to 36pt for iOS 26.4 behavior.
  • Update inline documentation to reflect the new empirical measurement and re-verification details.
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).
@MauiBot

MauiBot commented May 11, 2026

Copy link
Copy Markdown
Collaborator

🤖 AI Summary

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

📊 Review Session35f2271 · Fix iOS 26 Stepper landscape overlap · 2026-05-11 15:55 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 — ViewBaseTests

Detected UI test categories: ViewBaseTests

🧪 UI Test Execution Results

⏭️ SKIPPED — 0 passed, 0 failed, 1 skipped (platform: ios)

Category Result Tests Duration Notes
ViewBaseTests ⏭️ SKIPPED 0s Runner threw an exception

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

Deep UI tests — 112 passed, 0 failed across 1 category on platform-pool agent (replaces in-process counts above).

🧪 UI Test Execution Results (deep, platform pool)

Category Tests Snapshot diffs
ios_ui_tests-controls-ViewBaseTests 112/112 ✓
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)

🔍 Pre-Flight — Context & Validation

Pre-Flight — PR #35374

Summary

Fix iOS 26 Stepper overlap in landscape (issue #35211). PR extends an existing iOS 26 UIStepper Liquid Glass workaround:

  • src/Core/src/Handlers/Stepper/StepperHandler.iOS.cs
    • Constant iOSLiquidGlassStepperOverflow changed 20 → 36 pts.
    • Comments updated (measured on iOS 26.4 with a small safety margin).
  • src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/EditorNoOverlapAfterRotateToLandscape.png — visual baseline refreshed.

Issue context

Classification

  • Files: 1 .ios.cs handler + 1 snapshot PNG.
  • Risk: low — code change is a constant + comments; logical control flow unchanged.
  • iOS only, MacCatalyst excluded, iOS 26+ gated, landscape gated.
  • No public API changes.

Gate

Gate ⚠️ SKIPPED — no new test added; existing Issue34273 visual tests cover the scenario and the PR updated their iOS 26 landscape baseline. Recommend author add a regression assertion or note coverage explicitly. Existing iOS visual tests passed locally per PR description (Passed: 2, Failed: 0).

Code-review summary (advisory hints for Try-Fix)

  • Errors: None — guards and platform checks remain correct.
  • ⚠️ Warnings:
    • Magic constant approach: bumping 20 → 36 is empirical and unstable across iOS minor versions. The same pattern already shipped once and now needs a 2nd tune; a more principled approach (read from rendered glass layer bounds or insets) would be more durable.
    • Safety-margin amount not documented (is 36 = 28 measured + 8 margin? unclear). Future maintainers won't know which part is "real" vs "buffer".
    • UIScreen.MainScreen.Bounds is used for orientation — deprecated/unreliable in multi-window scenarios. Existing pattern is preserved, but could yield wrong compensation on iPad split-view or external display.
    • Snapshot test path is iOS-26-specific; the updated baseline is only verified for one simulator/device. iPad / iPhone Pro Max landscape may still overflow if width differs.
  • 💡 Suggestions:
    • Consider deriving overflow from UIStepper.Layer.Frame vs Bounds post-layout (one-time on first layout), falling back to constant.
    • Apply compensation to both leading + trailing or use a measured per-orientation value.
  • Failure modes:
    • iOS 26.5+ further increases overflow → constant becomes stale again.
    • Stepper inside RTL HorizontalStackLayout: overflow is on UIKit trailing edge; in RTL, trailing is opposite of LTR. Current code adds to width regardless — if the visible overflow is leading in RTL, the wrong side gets padded.
    • Stepper inside scroll views / non-stack layouts: extra width creates unused space on the right.
  • Blast radius: Runs in GetDesiredSize for every Stepper on iOS 26+ in landscape. Negligible perf cost; visible layout impact only.
  • Verdict: NEEDS_DISCUSSION (low-medium confidence) — fix solves the reported case but doubles the magic constant; principled alternatives exist.

Test evidence

  • PR description states Issue34273 visual tests pass on iPhone 11 Pro iOS 26.4 (2/0).
  • Visual snapshot updated.

Platform for testing

iOS (per task input).


🔧 Fix — Analysis & Comparison

Try-Fix Aggregate Summary — PR #35374

Four independent fix candidates were generated using different maui-expert-reviewer dimensions. None were executed against an iOS 26.4 simulator (no test infrastructure available in the autonomous environment), so all test-result columns are marked ⚠️ NOT VERIFIED.

Fix Candidates

# Source Dimension Approach Test Result Files Changed Notes
1 try-fix-1 Handler patterns / Layout Derive overflow from AlignmentRectInsets at runtime ⚠️ Static-analysis FAIL 1 Pre-flight notes state AlignmentRectInsets reports pre-glass size; would regress fix
2 try-fix-2 iOS Platform / version Apply 36 only on iOS 26.4+, keep 20 for 26.0-26.3 ⚠️ Not verified 1 Plausible; conservative for already-shipped subversions
3 try-fix-3 Performance / regression Replace UIScreen.MainScreen with Window.WindowScene.InterfaceOrientation ⚠️ Not verified 1 Good follow-up cleanup, wrong scope for SR fix
4 try-fix-4 API design / extensibility Convert const to internal tunable static ⚠️ Not verified 1 Marginal benefit, new mutable static — reject
pr PR #35374 (submitted fix) Bump 2036, refresh snapshot ✅ Author validated: Issue34273 iOS visual tests 2/0 on iPhone 11 Pro iOS 26.4 2 Minimal, surgical
pr+rev Branch A Code review applied Split 36 = 30 measured + 6 safety + tighter comments ✅ Behaviorally identical to pr 1 Adds maintainability without behavior change

Cross-Pollination

Model / dimension Round New Ideas? Details
Handler patterns 2 No Dynamic measurement blocked by UIKit reporting pre-glass size
iOS Platform 2 No Version-scoped constant already covered
Performance/regression 2 No Multi-window orientation already proposed; out of scope
API design 2 No Tunable static already proposed; not worth the surface

Exhausted: Yes — no new viable ideas after cross-pollination.

Selected Fix

pr-plus-reviewer — keeps the PR's minimal, validated behavior change (constant bumped, snapshot refreshed) and layers on a low-risk maintainability improvement (split into measured + safety constants; concrete iOS subversion documented; de-duplicated comment).

pr is also acceptable to merge as-is — pr-plus-reviewer is a strict super-set, never worse. The four try-fix alternatives are either incorrect (try-fix-1), out-of-scope (try-fix-3), or strictly inferior (try-fix-2 unnecessarily branches; try-fix-4 adds mutable surface).

Test verification caveat

All candidates that change behavior would need to be validated on an iOS 26.4 simulator against the Issue34273 visual tests. Only pr has that validation (per PR description); pr-plus-reviewer inherits it because the behavior is bit-identical.


📋 Report — Final Recommendation

Phase 3 — Report

Candidate ranking

Rank Candidate Verified behavior Risk Maintainability Verdict
🥇 1 pr-plus-reviewer ✅ Behavior-identical to pr (same 36 total) Low Best — measured + safety split, concrete iOS subversion documented Recommend
🥈 2 pr ✅ Author-validated Issue34273 2/0 on iOS 26.4 Low Good — minimal, surgical Acceptable as-is
3 try-fix-2 ⚠️ Not verified Low-medium OK — adds version branch Plausible alternative; depends on whether iOS 26.0-26.3 needed 36 or 20
4 try-fix-3 ⚠️ Not verified Medium Cleanup, not a fix Out of scope for SR fix — file separately
5 try-fix-4 ⚠️ Not verified Low Marginal Rejects added mutable static for no behavior gain
6 try-fix-1 ❌ Static analysis FAIL — AlignmentRectInsets reports pre-glass size High Would regress fix Rejected

Test verification ranking note

Per the task rules, candidates that failed regression tests rank below ones that passed. Only pr has direct verification (per author description); pr-plus-reviewer is byte-identical at runtime so it inherits that verification. Try-fix-1 is statically known to break the fix; ranked last. The other try-fix candidates are unverified — ranked below the verified pair.

Selected winner: pr-plus-reviewer

The PR's behavioral change (bump iOSLiquidGlassStepperOverflow 20 → 36 in landscape on iOS 26+) is correct and validated for the reported scenario. The maintainability concerns flagged by code review are real (the constant has been retuned twice across iOS 26.x; the safety margin amount is undocumented in the PR). pr-plus-reviewer keeps the same compensation amount and same control flow, but splits the literal into measured + safety and pins a concrete iOS subversion in the comment — so the next maintainer touching this code on iOS 26.5 has the data they need.

If the team prefers minimal SR diffs, pr is also fine to merge as-is. The expert review feedback can land as a separate cleanup PR.

What was NOT verified

  • All try-fix candidates were not run against an iOS 26.4 simulator (no test infra in the autonomous environment).
  • iPad multi-window orientation behavior (raised by try-fix-3) is not covered by the existing Issue34273 visual tests.
  • iOS 26.0-26.3 layout (raised by try-fix-2) is not separately validated; the 36 value may over-pad on those subversions.

Suggested PR follow-ups (not blocking merge)

  1. Author should consider applying the pr-plus-reviewer comment/constant split (see inline findings).
  2. Track migration off UIScreen.MainScreen.Bounds to WindowScene.InterfaceOrientation for iPad multi-window correctness (try-fix-3) as a separate cleanup issue.
  3. Add a unit test that asserts GetDesiredSize reports logical_width + 36 in landscape on iOS 26+ (mockable via IsLandscape extraction) so future tuning is regression-protected without needing a visual snapshot run.

@MauiBot MauiBot added s/agent-review-incomplete s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels May 11, 2026
@kubaflo
kubaflo changed the base branch from main to inflight/current May 11, 2026 18:45
@kubaflo
kubaflo merged commit 1686854 into dotnet:inflight/current May 11, 2026
34 of 35 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR7 milestone May 11, 2026
@AdamEssenmacher
AdamEssenmacher deleted the issue-35211 branch May 11, 2026 18:47
@kubaflo kubaflo added s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates and removed s/agent-review-incomplete labels May 20, 2026
@kubaflo kubaflo added the s/agent-changes-requested AI agent recommends changes - found a better alternative or issues label May 20, 2026
PureWeen pushed a commit that referenced this pull request Jun 2, 2026
### Description of Change

Extends the existing iOS 26 `UIStepper` Liquid Glass workaround for
landscape orientation.

On iOS 26.4, the stepper glass pill can render farther outside its
logical UIKit bounds than the previous `20pt` compensation covered,
causing adjacent controls in horizontal layouts to appear inside the
visible stepper pill. This updates the landscape-only compensation to
`36pt`, keeps the existing iOS 26+ and non-MacCatalyst guards, and
refreshes only the affected iOS 26 landscape visual baseline.

No public API changes.

Validation performed:
- Built and ran ManualTests on iOS 26.4.
- Verified `D Editor -> D10` in landscape; the `0` label is fully
outside the stepper glass pill.
- Rechecked the same ManualTests scenario on iOS 18.6; layout remains
unchanged.
- Ran the existing Issue34273 iOS visual tests on iPhone 11 Pro iOS
26.4:
  - `Passed: 2, Failed: 0`

### Issues Fixed

Fixes #35211

---------
PureWeen pushed a commit that referenced this pull request Jun 11, 2026
### Description of Change

Extends the existing iOS 26 `UIStepper` Liquid Glass workaround for
landscape orientation.

On iOS 26.4, the stepper glass pill can render farther outside its
logical UIKit bounds than the previous `20pt` compensation covered,
causing adjacent controls in horizontal layouts to appear inside the
visible stepper pill. This updates the landscape-only compensation to
`36pt`, keeps the existing iOS 26+ and non-MacCatalyst guards, and
refreshes only the affected iOS 26 landscape visual baseline.

No public API changes.

Validation performed:
- Built and ran ManualTests on iOS 26.4.
- Verified `D Editor -> D10` in landscape; the `0` label is fully
outside the stepper glass pill.
- Rechecked the same ManualTests scenario on iOS 18.6; layout remains
unchanged.
- Ran the existing Issue34273 iOS visual tests on iPhone 11 Pro iOS
26.4:
  - `Passed: 2, Failed: 0`

### Issues Fixed

Fixes #35211

---------
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 20, 2026
@github-actions github-actions Bot modified the milestones: .NET 10 SR7, .NET 10 SR9 Jul 22, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-controls-stepper Stepper community ✨ Community Contribution platform/ios 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) version/iOS-26

6 participants