Skip to content

Fix SafeArea AdjustPan handling and add AdjustNothing mode tests#33354

Merged
PureWeen merged 12 commits intoinflight/candidatefrom
copilot/update-adjustpan-adjustnone-tests
Jan 6, 2026
Merged

Fix SafeArea AdjustPan handling and add AdjustNothing mode tests#33354
PureWeen merged 12 commits intoinflight/candidatefrom
copilot/update-adjustpan-adjustnone-tests

Conversation

Copy link
Contributor

Copilot AI commented Jan 1, 2026

Summary

Fix SafeArea inset handling when SoftInputMode is set to AdjustPan or AdjustNothing on Android.

Problem

When SoftInputMode is set to AdjustPan, the MAUI framework was incorrectly modifying padding when the keyboard appeared. With AdjustPan, Android handles keyboard visibility by panning the window, so MAUI should not apply any additional padding adjustments.

Solution

SafeAreaExtensions.cs Fix

  • Use SoftInput.MaskAdjust to properly detect AdjustPan mode (distinguishes from AdjustNothing)
  • When AdjustPan is detected, consume insets and return immediately without modifying padding
  • This allows Android's native AdjustPan behavior to work correctly

Test Updates

  • Updated 9 Issue28986 SafeArea test files to explicitly set SoftInput.AdjustNothing for consistent test behavior
  • Added Issue32041AdjustPan test to validate AdjustPan mode behavior
  • Added Issue33276 test to validate safe area padding restoration after keyboard closes

Files Changed

  • src/Core/src/Platform/Android/SafeAreaExtensions.cs - Core fix for AdjustPan detection
  • 9 Issue28986 test files - Set SoftInput.AdjustNothing mode
  • Issue32041AdjustPan test page and UI test - New test for AdjustPan validation
  • Issue33276 test page and UI test - New test for padding restoration validation
Original prompt

Create a new pr from this pr #33145 but only include the changes and tests related to adjustpan and adjustnone. Don't include anything related to adjustresize


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI changed the title [WIP] Update tests for adjustpan and adjustnone properties Add AdjustPan and AdjustNothing soft input mode changes and tests Jan 1, 2026
Copilot AI requested a review from PureWeen January 1, 2026 07:15
@PureWeen
Copy link
Member

PureWeen commented Jan 1, 2026

@copilot add uitests that will cover

#33276

Copy link
Contributor Author

Copilot AI commented Jan 1, 2026

@copilot add uitests that will cover

#33276

Added UI test for #33276 in commit eba9125. The test validates that safe area padding is restored after the keyboard closes by:

  1. Recording the initial position of the bottom border
  2. Opening the keyboard
  3. Closing the keyboard
  4. Verifying the bottom border returns to its original position

@PureWeen
Copy link
Member

PureWeen commented Jan 2, 2026

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@PureWeen PureWeen marked this pull request as ready for review January 2, 2026 15:58
Copilot AI review requested due to automatic review settings January 2, 2026 15:58
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR extracts AdjustPan and AdjustNothing soft input mode changes from PR #33145, focusing on Android keyboard handling behavior. The changes include a fix to the AdjustPan detection logic and updates to multiple test files to use SoftInput.AdjustNothing mode for proper SafeArea validation.

Key changes:

  • Fixed AdjustPan bitwise comparison in SafeAreaExtensions.cs to properly detect when AdjustPan flag is set
  • Updated 9 Issue28986 test files to use AdjustNothing mode for consistent keyboard behavior testing
  • Added Issue32041AdjustPan test page and UI test to validate AdjustPan behavior
  • Added Issue33276 test page and UI test to verify safe area padding restoration after keyboard dismissal

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/Core/src/Platform/Android/SafeAreaExtensions.cs Fixed AdjustPan detection using bitwise AND comparison instead of direct equality; simplified comment
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue33276.cs Added UI test for safe area padding restoration after keyboard closes with AdjustNothing mode
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32041AdjustPan.cs Added UI test to verify AdjustPan mode doesn't resize container (window pans instead)
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue28986_ContentPage.cs Updated test to reflect AdjustNothing mode instead of AdjustPan
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue28986.cs Updated test to reflect AdjustNothing mode instead of AdjustPan
src/Controls/tests/TestCases.HostApp/Issues/Issue33276.xaml.cs Added test page code-behind with padding monitoring logic
src/Controls/tests/TestCases.HostApp/Issues/Issue33276.xaml Added test page XAML with safe area configuration and UI elements
src/Controls/tests/TestCases.HostApp/Issues/Issue32041AdjustPan.xaml.cs Added test page code-behind that sets SoftInput.AdjustPan mode
src/Controls/tests/TestCases.HostApp/Issues/Issue32041AdjustPan.xaml Added test page XAML with AdjustPan layout structure
src/Controls/tests/TestCases.HostApp/Issues/Issue28986_Shell.cs Added SoftInput.AdjustNothing configuration to Shell test page
src/Controls/tests/TestCases.HostApp/Issues/Issue28986_ScrollView.xaml.cs Added SoftInput.AdjustNothing configuration to ScrollView test page
src/Controls/tests/TestCases.HostApp/Issues/Issue28986_SafeAreaBorderOrientation.xaml.cs Added SoftInput.AdjustNothing configuration to SafeAreaBorder test page
src/Controls/tests/TestCases.HostApp/Issues/Issue28986_NavigationPage.cs Added SoftInput.AdjustNothing configuration to NavigationPage test page
src/Controls/tests/TestCases.HostApp/Issues/Issue28986_FlyoutPage.cs Added SoftInput.AdjustNothing configuration to FlyoutPage test page
src/Controls/tests/TestCases.HostApp/Issues/Issue28986_ContentView.xaml.cs Added SoftInput.AdjustNothing configuration to ContentView test page
src/Controls/tests/TestCases.HostApp/Issues/Issue28986_ContentPage.xaml.cs Added SoftInput.AdjustNothing configuration to ContentPage test page
src/Controls/tests/TestCases.HostApp/Issues/Issue28986_Border.xaml.cs Added SoftInput.AdjustNothing configuration to Border test page
src/Controls/tests/TestCases.HostApp/Issues/Issue28986.xaml.cs Added SoftInput.AdjustNothing configuration to main test page

@PureWeen
Copy link
Member

PureWeen commented Jan 2, 2026

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@PureWeen PureWeen changed the base branch from main to inflight/candidate January 6, 2026 14:14
@PureWeen
Copy link
Member

PureWeen commented Jan 6, 2026

/rebase

@github-actions github-actions bot force-pushed the copilot/update-adjustpan-adjustnone-tests branch from a943c52 to c250997 Compare January 6, 2026 14:15
@PureWeen
Copy link
Member

PureWeen commented Jan 6, 2026

@copilot can you update the title and description of this PR to explain exactly what this PR does and fixes?

titles and descriptions are used for commit messages

Copilot AI and others added 12 commits January 6, 2026 08:20
…om PR #33145)

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
…oard closes

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
When SoftInput.AdjustPan is set, the window pans instead of resizing.
Previously, the code would still calculate and apply padding changes
during keyboard transitions, causing a visual bounce.

Now the AdjustPan check happens immediately when the keyboard is showing,
returning early as a complete no-op. This keeps safe area padding
unchanged while the keyboard is visible.

Fixes #33276
The early exit should only happen when there is no bottom inset to apply.
This preserves the original behavior while fixing the bitwise check issue.
The check is positioned after calculating edge values so bottom has a value.
The softInputMode can include both state flags and adjust flags combined.
Using MaskAdjust (0x30) extracts only the adjust portion, so we correctly
detect AdjustPan regardless of which state flags are set.

This fixes the SafeAreaPerEdgeValidation test which was failing because
the bitwise check was matching more modes than intended.
Move the AdjustPan check BEFORE edge value calculation so it's a true no-op.
Use MaskAdjust to properly detect AdjustPan mode regardless of state flags.
Only skip if the bottom edge does NOT have SoftInput set - if SoftInput is
explicitly requested, continue normal processing to resize for keyboard.

This fixes Issue33276 (visual bounce with AdjustPan) while preserving the
SafeAreaPerEdgeValidation behavior (resize when SoftInput is requested).
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
With AdjustPan mode, the window pans instead of resizing when keyboard shows.
The ContentGrid height should stay the same, not shrink. Updated test
assertions to reflect this expected behavior.
1. Use MaskAdjust to properly distinguish AdjustPan from AdjustNothing
   - AdjustNothing (0x30) & AdjustPan (0x20) = 0x20 which incorrectly matched
   - Now using (softInputMode & MaskAdjust) == AdjustPan for correct detection

2. Update SafeAreaPerEdgeValidation tests for AdjustNothing mode
   - Issue28986 tests use AdjustNothing, not AdjustPan
   - With AdjustNothing, SoftInput padding should apply and ContentGrid should shrink
   - Fixed comment to reflect correct behavior
1. Improve Issue32041AdjustPan test to validate marker dimensions stay same
   - With AdjustPan, window pans so screen coordinates change
   - But marker height/width should remain unchanged (no padding applied)
   - Check that elements remain accessible after panning

2. MaskAdjust fix was already applied in previous commit for proper
   AdjustPan vs AdjustNothing detection
@PureWeen PureWeen force-pushed the copilot/update-adjustpan-adjustnone-tests branch from c250997 to c1bea37 Compare January 6, 2026 14:20
Copy link
Contributor Author

Copilot AI commented Jan 6, 2026

@copilot can you update the title and description of this PR to explain exactly what this PR does and fixes?

titles and descriptions are used for commit messages

Updated the PR description in 2405f34 to clearly explain:

  • Problem: SafeArea inset handling incorrectly modifying padding when AdjustPan mode is set
  • Solution: Use SoftInput.MaskAdjust to properly detect AdjustPan and skip padding modifications
  • Tests added: Issue32041AdjustPan (validates AdjustPan behavior) and Issue33276 (validates padding restoration)

Note: PR titles cannot be updated programmatically. Suggested title: "Fix SafeArea AdjustPan handling and add AdjustNothing mode tests"

Copilot AI changed the title Add AdjustPan and AdjustNothing soft input mode changes and tests Fix SafeArea AdjustPan handling and add AdjustNothing mode tests Jan 6, 2026
Copilot AI requested a review from PureWeen January 6, 2026 14:28
@PureWeen PureWeen force-pushed the copilot/update-adjustpan-adjustnone-tests branch from 2405f34 to c1bea37 Compare January 6, 2026 14:47
@PureWeen PureWeen merged commit b804546 into inflight/candidate Jan 6, 2026
1 of 12 checks passed
@PureWeen PureWeen deleted the copilot/update-adjustpan-adjustnone-tests branch January 6, 2026 14:48
@PureWeen PureWeen mentioned this pull request Jan 7, 2026
PureWeen added a commit that referenced this pull request Jan 9, 2026
)

## Summary

Fix SafeArea inset handling when SoftInputMode is set to AdjustPan or
AdjustNothing on Android.

## Problem

When SoftInputMode is set to AdjustPan, the MAUI framework was
incorrectly modifying padding when the keyboard appeared. With
AdjustPan, Android handles keyboard visibility by panning the window, so
MAUI should not apply any additional padding adjustments.

## Solution

### SafeAreaExtensions.cs Fix
- Use `SoftInput.MaskAdjust` to properly detect AdjustPan mode
(distinguishes from AdjustNothing)
- When AdjustPan is detected, consume insets and return immediately
without modifying padding
- This allows Android's native AdjustPan behavior to work correctly

### Test Updates
- Updated 9 Issue28986 SafeArea test files to explicitly set
`SoftInput.AdjustNothing` for consistent test behavior
- Added Issue32041AdjustPan test to validate AdjustPan mode behavior
- Added Issue33276 test to validate safe area padding restoration after
keyboard closes

## Files Changed
- `src/Core/src/Platform/Android/SafeAreaExtensions.cs` - Core fix for
AdjustPan detection
- 9 Issue28986 test files - Set SoftInput.AdjustNothing mode
- Issue32041AdjustPan test page and UI test - New test for AdjustPan
validation
- Issue33276 test page and UI test - New test for padding restoration
validation

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> Create a new pr from this pr #33145
but only include the changes and tests related to adjustpan and
adjustnone. Don't include anything related to adjustresize


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
PureWeen added a commit that referenced this pull request Jan 9, 2026
)

## Summary

Fix SafeArea inset handling when SoftInputMode is set to AdjustPan or
AdjustNothing on Android.

## Problem

When SoftInputMode is set to AdjustPan, the MAUI framework was
incorrectly modifying padding when the keyboard appeared. With
AdjustPan, Android handles keyboard visibility by panning the window, so
MAUI should not apply any additional padding adjustments.

## Solution

### SafeAreaExtensions.cs Fix
- Use `SoftInput.MaskAdjust` to properly detect AdjustPan mode
(distinguishes from AdjustNothing)
- When AdjustPan is detected, consume insets and return immediately
without modifying padding
- This allows Android's native AdjustPan behavior to work correctly

### Test Updates
- Updated 9 Issue28986 SafeArea test files to explicitly set
`SoftInput.AdjustNothing` for consistent test behavior
- Added Issue32041AdjustPan test to validate AdjustPan mode behavior
- Added Issue33276 test to validate safe area padding restoration after
keyboard closes

## Files Changed
- `src/Core/src/Platform/Android/SafeAreaExtensions.cs` - Core fix for
AdjustPan detection
- 9 Issue28986 test files - Set SoftInput.AdjustNothing mode
- Issue32041AdjustPan test page and UI test - New test for AdjustPan
validation
- Issue33276 test page and UI test - New test for padding restoration
validation

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> Create a new pr from this pr #33145
but only include the changes and tests related to adjustpan and
adjustnone. Don't include anything related to adjustresize


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
PureWeen added a commit that referenced this pull request Jan 13, 2026
)

## Summary

Fix SafeArea inset handling when SoftInputMode is set to AdjustPan or
AdjustNothing on Android.

## Problem

When SoftInputMode is set to AdjustPan, the MAUI framework was
incorrectly modifying padding when the keyboard appeared. With
AdjustPan, Android handles keyboard visibility by panning the window, so
MAUI should not apply any additional padding adjustments.

## Solution

### SafeAreaExtensions.cs Fix
- Use `SoftInput.MaskAdjust` to properly detect AdjustPan mode
(distinguishes from AdjustNothing)
- When AdjustPan is detected, consume insets and return immediately
without modifying padding
- This allows Android's native AdjustPan behavior to work correctly

### Test Updates
- Updated 9 Issue28986 SafeArea test files to explicitly set
`SoftInput.AdjustNothing` for consistent test behavior
- Added Issue32041AdjustPan test to validate AdjustPan mode behavior
- Added Issue33276 test to validate safe area padding restoration after
keyboard closes

## Files Changed
- `src/Core/src/Platform/Android/SafeAreaExtensions.cs` - Core fix for
AdjustPan detection
- 9 Issue28986 test files - Set SoftInput.AdjustNothing mode
- Issue32041AdjustPan test page and UI test - New test for AdjustPan
validation
- Issue33276 test page and UI test - New test for padding restoration
validation

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> Create a new pr from this pr #33145
but only include the changes and tests related to adjustpan and
adjustnone. Don't include anything related to adjustresize


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
PureWeen added a commit that referenced this pull request Jan 13, 2026
)

## Summary

Fix SafeArea inset handling when SoftInputMode is set to AdjustPan or
AdjustNothing on Android.

## Problem

When SoftInputMode is set to AdjustPan, the MAUI framework was
incorrectly modifying padding when the keyboard appeared. With
AdjustPan, Android handles keyboard visibility by panning the window, so
MAUI should not apply any additional padding adjustments.

## Solution

### SafeAreaExtensions.cs Fix
- Use `SoftInput.MaskAdjust` to properly detect AdjustPan mode
(distinguishes from AdjustNothing)
- When AdjustPan is detected, consume insets and return immediately
without modifying padding
- This allows Android's native AdjustPan behavior to work correctly

### Test Updates
- Updated 9 Issue28986 SafeArea test files to explicitly set
`SoftInput.AdjustNothing` for consistent test behavior
- Added Issue32041AdjustPan test to validate AdjustPan mode behavior
- Added Issue33276 test to validate safe area padding restoration after
keyboard closes

## Files Changed
- `src/Core/src/Platform/Android/SafeAreaExtensions.cs` - Core fix for
AdjustPan detection
- 9 Issue28986 test files - Set SoftInput.AdjustNothing mode
- Issue32041AdjustPan test page and UI test - New test for AdjustPan
validation
- Issue33276 test page and UI test - New test for padding restoration
validation

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> Create a new pr from this pr #33145
but only include the changes and tests related to adjustpan and
adjustnone. Don't include anything related to adjustresize


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
PureWeen added a commit that referenced this pull request Jan 13, 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 27 commits with various improvements,
bug fixes, and enhancements.

## CollectionView
- [iOS][CV2] Fix page can be dragged down, and it would cause an extra
space between Header and EmptyView text by @devanathan-vaithiyanathan in
#31840
  <details>
  <summary>🔧 Fixes</summary>

- [I8_Header_and_Footer_Null - The page can be dragged down, and it
would cause an extra space between Header and EmptyView
text.](#31465)
  </details>

- [iOS] Fixed the Items not displayed properly in CarouselView2 by
@Ahamed-Ali in #31336
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Items are not updated properly in
CarouselView2.](#31148)
  </details>

## Docs
- Improve Controls Core API docs by @jfversluis in
#33240

## Editor
- [iOS] Fixed an issue where an Editor with a small height inside a
ScrollView would cause the entire page to scroll by
@Tamilarasan-Paranthaman in #27948
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS][Editor] An Editor that has not enough height and resides inside
a ScrollView/CollectionView will scroll the entire
page](#27750)
  </details>

## Image
- [Android] Image control crashes on Android when image width exceeds
height by @KarthikRajaKalaimani in
#33045
  <details>
  <summary>🔧 Fixes</summary>

- [Image control crashes on Android when image width exceeds
height](#32869)
  </details>

## Mediapicker
- [Android 🤖] Add a log telling why the request is cancelled by @pictos
in #33295
  <details>
  <summary>🔧 Fixes</summary>

- [MediaPicker.PickPhotosAsync throwing TaskCancelledException in
net10-android](#33283)
  </details>

## Navigation
- [Android] Fix for App Hang When PopModalAsync Is Called Immediately
After PushModalAsync with Task.Yield() by @BagavathiPerumal in
#32479
  <details>
  <summary>🔧 Fixes</summary>

- [App hangs if PopModalAsync is called after PushModalAsync with single
await Task.Yield()](#32310)
  </details>

- [iOS 26] Navigation hangs after rapidly open and closing new page
using Navigation.PushAsync - fix by @kubaflo in
#32456
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS 26] Navigation hangs after rapidly open and closing new page
using Navigation.PushAsync](#32425)
  </details>

## Pages
- [iOS] Fix ContentPage BackgroundImageSource not working by
@Shalini-Ashokan in #33297
  <details>
  <summary>🔧 Fixes</summary>

- [.Net MAUI- Page.BackgroundImageSource not working for
iOS](#21594)
  </details>

## RadioButton
- [Issue-Resolver] Fix #33264 - RadioButtonGroup not working with
Collection View by @kubaflo in #33343
  <details>
  <summary>🔧 Fixes</summary>

- [RadioButtonGroup not working with
CollectionView](#33264)
  </details>

## SafeArea
- [Android] Fixed Label Overlapped by Android Status Bar When Using
SafeAreaEdges="Container" in .NET MAUI by @NirmalKumarYuvaraj in
#33285
  <details>
  <summary>🔧 Fixes</summary>

- [SafeAreaEdges works correctly only on the first tab in Shell. Other
tabs have content colliding with the display cutout in the landscape
mode.](#33034)
- [Label Overlapped by Android Status Bar When Using
SafeAreaEdges="Container" in .NET
MAUI](#32941)
- [[MAUI 10] Layout breaks on first navigation (Shell // route) until
soft keyboard appears/disappears (Android +
iOS)](#33038)
  </details>

## ScrollView
- [Windows, Android] Fix ScrollView Content Not Removed When Set to Null
by @devanathan-vaithiyanathan in
#33069
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows, Android] ScrollView Content Not Removed When Set to
Null](#33067)
  </details>

## Searchbar
- Fix Android crash when changing shared Drawable tint on Searchbar by
@tritter in #33071
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Crash on changing Tint of
Searchbar](#33070)
  </details>

## Shell
- [iOS] - Fix Custom FlyoutIcon from Being Overridden to Default Color
in Shell by @prakashKannanSf3972 in
#27580
  <details>
  <summary>🔧 Fixes</summary>

- [Change the flyout icon
color](#6738)
  </details>

- [iOS] Fix Shell NavBarIsVisible updates when switching ShellContent by
@Vignesh-SF3580 in #33195
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Shell NavBarIsVisible is not updated when changing
ShellContent](#33191)
  </details>

## Slider
- [C] Fix Slider and Stepper property order independence by
@StephaneDelcroix in #32939
  <details>
  <summary>🔧 Fixes</summary>

- [Slider Binding Initialization Order Causes Incorrect Value Assignment
in XAML](#32903)
- [Slider is very broken, Value is a mess when setting
Minimum](#14472)
- [Slider is buggy depending on order of
properties](#18910)
- [Stepper Value is incorrectly clamped to default min/max when using
bindableproperties in MVVM
pattern](#12243)
- [[Issue-Resolver] Fix #32903 - Sliderbinding initialization order
issue](#32907)
  </details>

## Stepper
- [Windows] Maui Stepper: Clamp minimum and maximum value by @OomJan in
#33275
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] Maui Stepper is not clamped to minimum or maximum
internally](#33274)
  </details>

- [iOS] Fixed the UIStepper Value from being clamped based on old higher
MinimumValue - Candidate PR test failure fix- 33363 by @Ahamed-Ali in
#33392

## TabbedPage
- [windows] Fixed Rapid change of selected tab results in crash. by
@praveenkumarkarunanithi in #33113
  <details>
  <summary>🔧 Fixes</summary>

- [Rapid change of selected tab results in crash on
Windows.](#32824)
  </details>

## Titlebar
- [Mac] Fix TitleBar Content Overlapping with Traffic Light Buttons on
Latest macOS Version by @devanathan-vaithiyanathan in
#33157
  <details>
  <summary>🔧 Fixes</summary>

- [TitleBar Content Overlapping with Traffic Light Buttons on Latest
macOS Version](#33136)
  </details>

## Xaml
- Fix for Control does not update from binding anymore after
MultiBinding.ConvertBack is called by @BagavathiPerumal in
#33128
  <details>
  <summary>🔧 Fixes</summary>

- [Control does not update from binding anymore after
MultiBinding.ConvertBack is
called](#24969)
- [The issue with the MultiBinding converter with two way binding mode
does not work properly when changing the
values.](#20382)
  </details>


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

- Avoid KVO on CALayer by introducing an Apple PlatformInterop by
@albyrock87 in #30861

</details>

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

- [Testing] Enable UITest Issue18193 on MacCatalyst by @NafeelaNazhir in
#31653
  <details>
  <summary>🔧 Fixes</summary>

- [Test Issue18193 was disabled on Mac
Catalyst](#27206)
  </details>
- Set the CV2 handlers as the default by @Ahamed-Ali in
#33177

</details>

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

- Update WindowsAppSDK to 1.8 by @mattleibow in
#32174
  <details>
  <summary>🔧 Fixes</summary>

- [Update to WindowsAppSDK](#30858)
  </details>
- Fix command dependency reentrancy by @simonrozsival in
#33129
- Fix SafeArea AdjustPan handling and add AdjustNothing mode tests by
@PureWeen via @Copilot in #33354

</details>
**Full Changelog**:
main...inflight/candidate
kubaflo pushed a commit to kubaflo/maui that referenced this pull request Jan 16, 2026
…net#33354)

## Summary

Fix SafeArea inset handling when SoftInputMode is set to AdjustPan or
AdjustNothing on Android.

## Problem

When SoftInputMode is set to AdjustPan, the MAUI framework was
incorrectly modifying padding when the keyboard appeared. With
AdjustPan, Android handles keyboard visibility by panning the window, so
MAUI should not apply any additional padding adjustments.

## Solution

### SafeAreaExtensions.cs Fix
- Use `SoftInput.MaskAdjust` to properly detect AdjustPan mode
(distinguishes from AdjustNothing)
- When AdjustPan is detected, consume insets and return immediately
without modifying padding
- This allows Android's native AdjustPan behavior to work correctly

### Test Updates
- Updated 9 Issue28986 SafeArea test files to explicitly set
`SoftInput.AdjustNothing` for consistent test behavior
- Added Issue32041AdjustPan test to validate AdjustPan mode behavior
- Added Issue33276 test to validate safe area padding restoration after
keyboard closes

## Files Changed
- `src/Core/src/Platform/Android/SafeAreaExtensions.cs` - Core fix for
AdjustPan detection
- 9 Issue28986 test files - Set SoftInput.AdjustNothing mode
- Issue32041AdjustPan test page and UI test - New test for AdjustPan
validation
- Issue33276 test page and UI test - New test for padding restoration
validation

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> Create a new pr from this pr dotnet#33145
but only include the changes and tests related to adjustpan and
adjustnone. Don't include anything related to adjustresize


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
@github-actions github-actions bot locked and limited conversation to collaborators Feb 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants