KEMBAR78
[net10.0] Update net10 by rmarinho · Pull Request #31296 · dotnet/maui · GitHub
Skip to content

Conversation

rmarinho
Copy link
Member

@rmarinho rmarinho commented Aug 22, 2025

Bring latest changes from main to net10.0 branch

jsuarezruiz and others added 30 commits June 12, 2025 15:04
…lates (#30275)

* Initial plan

* Fix iOS Custom Entitlements File override issue - respect user-defined CodesignEntitlements

Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com>

* Add MSBuild tests for CodesignEntitlements fix

- Added SingleProject_CodesignEntitlementsRespected test to verify custom CodesignEntitlements property is preserved
- Added SingleProject_DefaultEntitlementsUsedWhenNoCustomSet test to verify default behavior still works
- Tests validate the fix for issue #30221 where custom entitlements were being overridden

Co-authored-by: rmarinho <1235097+rmarinho@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jfversluis <939291+jfversluis@users.noreply.github.com>
Co-authored-by: rmarinho <1235097+rmarinho@users.noreply.github.com>
…3665)

Context: https://github.com/davidortinau/AllTheLists

Profiling @davidortinau's app, I noticed the "Check-ins" sample felt
the slowest on Android.

One thing I noticed while scrolling:

    98.75ms (0.90%) Microsoft.Maui!Microsoft.Maui.Handlers.ImageHandler.PlatformArrange(Microsoft.Maui.Graphics.Rect)
    67.11ms (0.61%) Mono.Android!Android.Widget.ImageView.ScaleType.get_CenterCrop()

In this case, `PlatformArrange()` is called a lot for every `<Image/>`:

    if (PlatformView.GetScaleType() == ImageView.ScaleType.CenterCrop)
    {
        var (left, top, right, bottom) = PlatformView.Context!.ToPixels(frame);
        var clipRect = new Android.Graphics.Rect(0, 0, right - left, bottom - top);
        PlatformView.ClipBounds = clipRect;
    }

`ImageView.ScaleType` is a class, and so and some bookkeeping is done
to lookup *the same* C# instance for a Java object. We can make this a
bit better by writing a new Java method:

    public static boolean isImageViewCenterCrop(@nonnull ImageView imageView) {
        return imageView.getScaleType() == ImageView.ScaleType.CENTER_CROP;
    }

Next, let's make a `PlatformView.ToPixels()` extension method that can
avoid calling `View.Context` for the same reason.

Lastly, we can make a `PlatformInterop.SetClipBounds()` method to avoid
creating a `Android.Graphics.Rect` object in C#.

With these changes, I can only see the topmost `PlatformArrange()`
method now:

    2.93ms (0.03%) Microsoft.Maui!Microsoft.Maui.Handlers.ImageHandler.PlatformArrange(Microsoft.Maui.Graphics.Rect)

This should improve the layout performance of all .NET MAUI `<Image/>`
on Android. I also "banned" `GetScaleType()` in `eng/BannedSymbols.txt`.
…ds remaining threshold (#29763)

* Fix for 29740

* Update Issue29740.cs

* Update src/Controls/tests/TestCases.HostApp/Issues/Issue29740.cs

indentation changes

Co-authored-by: MartyIX <203266+MartyIX@users.noreply.github.com>

* Update src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue29740.cs

Co-authored-by: MartyIX <203266+MartyIX@users.noreply.github.com>

---------

Co-authored-by: MartyIX <203266+MartyIX@users.noreply.github.com>
* Fixed the picker view items source does not display on mac platform

* Added the test case

* Added the output images.

* Fixed the picker view items source does not display on mac platform

* Added the test case

* Added the output images.

* Create ShouldDisplayPickerItemsWhenOpeningPicker.png

Added the output image on windows platform

* Ignore the test case on catalyst platform

* Added the test case for mac platform

* Added the macOS output image

* Added the comment line for fix.
* [iOS] Fixed hidden indicator

* [iOS] Fixed hidden indicator
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…st (#29569)

* [Android] Input controls should not change keyboard visibility - test

* searchBar

* CR fixes
* [Android] Top bar item colors - fix

* Avoid tab icon tint for FontImageSource on Android

Prevents applying TabIconTint when the tab icon is a FontImageSource, as it manages its own color. This ensures correct icon coloring for font-based icons in TabbedPageManager.
* Gradient background with ImageButton

* Update GradientBackgroundShouldWorkWithImageButton.png
* MenuItem color fix

* Added UI test

* Added snapshots

* Updated Mac snapshot
* [iOS] Thumb image improvements

* Added snapshots
* add support to dismiss the prompt with enter on keyboard

* Windows only

---------

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
* Initial plan

* Fix CarouselView layout constraint issues on Mac Catalyst

Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com>

* Add missing image

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com>
Co-authored-by: Rui Marinho <me@ruimarinho.net>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…not properly work - fix (#31100)

* Call UpdateLayout in MapIsGrouped on iOS

Added a call to handler.UpdateLayout() in the MapIsGrouped method to ensure the layout is refreshed when the grouping state changes in CollectionViewHandler2 for iOS.

* Added a UITest
* optimize JS escaping

* add tests

* copy to HybridWebView

* use conditional compilation

* Update src/Controls/tests/DeviceTests/Elements/WebView/WebViewTests.cs

Co-authored-by: MartyIX <203266+MartyIX@users.noreply.github.com>

* Move tests

* use common WebViewHelper class

* add missing using

* fix build

* Fix CI

* More tests

---------

Co-authored-by: Edward Miller <symbiogenisis@outlook.com>
Co-authored-by: MartyIX <203266+MartyIX@users.noreply.github.com>
Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
* Changing shape background color with dataTrigger

* Refactor
NanthiniMahalingam and others added 21 commits September 5, 2025 16:21
…navigation (#28003)

Added UI the test case.

Added the outputs for android and iOS platform

Updated the fix and added the output images

Updated the code changes.

Updated the output image
Refactored fallback logic to use ObtainStyledAttributes and ColorStateList for determining the system default text color. This ensures correct color selection based on the enabled state of EditText, improving consistency with system themes.
Introduces an internal UpdateTextColor method to TimePickerExtensions for updating the text color of MauiTimePicker based on the ITimePicker's TextColor property.

Restore default text color in TimePicker on Android

Updates the UpdateTextColor method to restore the default theme primary text color when no custom color is set, instead of passing null. This ensures consistent appearance on Android API 23+.

Update src/Core/src/Platform/Android/TimePickerExtensions.cs
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
# Conflicts:
#	src/Controls/src/Core/Handlers/Items/CarouselViewHandler.iOS.cs
#	src/Controls/src/Core/NavigationPage/NavigationPage.cs
#	src/Controls/src/Core/Platform/Android/Extensions/TextViewExtensions.cs
#	src/Controls/src/Core/Platform/Android/TabbedPageManager.cs
#	src/Controls/src/Core/Platform/Windows/Extensions/TextBlockExtensions.cs
#	src/Controls/src/Core/Platform/iOS/Extensions/LabelExtensions.cs
#	src/Controls/tests/TestCases.HostApp/FeatureMatrix/Slider/SliderViewModal.cs
#	src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/AddItemsToCarouselViewWorks.png
#	src/Core/src/Handlers/Image/ImageHandler.Android.cs
#	src/Core/src/Platform/iOS/MauiRefreshView.cs
#	src/SingleProject/Resizetizer/src/Resizetizer.csproj
This pull request introduces several improvements and bug fixes across
the controls, handlers, and platform gesture management code. The most
significant changes include enhanced gesture event handling for Windows,
improved CarouselView initialization logic, updates to navigation page
stack management, and additional test cases for recent issues. There are
also project configuration updates to improve compatibility with AOT and
trimming.

**Gesture Handling and Event Management (Windows):**

* Refactored gesture event handling in
`GesturePlatformManager.Windows.cs` to use modern C# pattern matching
(`is not View view`) and simplified finger tracking logic, ensuring
fingers are cleared appropriately on pointer and manipulation events.
This improves reliability and code clarity for touch/gesture
interactions.
[[1]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13R539-R545)
[[2]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L562-L595)
[[3]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L609-R600)
[[4]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L856-R837)
[[5]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L875-R855)
[[6]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L899-R878)
[[7]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L711-R694)
[[8]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L779-R761)
* Fixed drag-and-drop event handling and improved pinch gesture state
management by moving `_isPinching = true` to the correct event handler.
[[1]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L264-R275)
[[2]](diffhunk://#diff-779a3cbf8053213a2331cbf6a85a82af5c41cd858702c4fa4c4efdf16d7a6b13L512-L513)

**CarouselView and ItemsView Improvements:**

* Updated `CarouselViewController2.cs` so initial position is only set
if the view is visible, preventing incorrect initialization when hidden.
* Updated test case `CarouselViewUpdatePosition.xaml` to use the correct
`CarouselView` control instead of a custom version, reflecting resolved
issues and improved reliability.

**Navigation and Modal Management:**

* Refactored navigation stack updates in `NavigationPage.Legacy.cs` to
ensure the correct page appears after removal, improving stack
consistency and event firing.
[[1]](diffhunk://#diff-fd62b9e1be65f45c35e4e7f56828a936fd9ce3052357cf7715da6d8618a9992bL46-L48)
[[2]](diffhunk://#diff-fd62b9e1be65f45c35e4e7f56828a936fd9ce3052357cf7715da6d8618a9992bR62-R69)
* Simplified modal navigation back press handling on Android by removing
complex event handler logic, preventing stack overflows and improving
maintainability.

**Project Configuration and Compatibility:**

* Added `<IsAotCompatible>true</IsAotCompatible>` and
`<AllowUnsafeBlocks>true</AllowUnsafeBlocks>` to project files,
improving support for AOT compilation and code trimming.
[[1]](diffhunk://#diff-6f43a8754586232decf1ed0dd2c2951a61355c52c728638934ff8e3fe1d53171R26-R32)
[[2]](diffhunk://#diff-33f0c4961f9a73122ccc2856023d4a2563b877e16d774eed3618e793780f3e5dR27)

**Test Cases and Issue Coverage:**

* Added new test cases for issues #23575, #28414, and #28811, improving
coverage for gradient color restoration, navigation stack updates, and
modal back button handling.
[[1]](diffhunk://#diff-886e8faf51027512a38656a0dbf4aa3bd77bb39358b20a7a6e4305a23e496b68R1-R38)
[[2]](diffhunk://#diff-e9cf17d3db81c16d2ef83ed94500fd099aab1fcd89952dd6bb3878ef3a7f2b92R1-R111)
[[3]](diffhunk://#diff-9ac61aced2af41a8341d76ff5eb0b9d4b695d46a63905010537024a3198e8365R1-R32)

Let me know if you want to dive deeper into any specific change or area!
* Update README with MauiVersion and compile instructions

* Uncomment MAUI platform settings in project file

* Update src/Controls/tests/ManualTests/Controls.ManualTests.csproj

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* [ci] Add back dnceng-public maui pipeline

* Fix
* Update Bug Template with .NET 9 SR11

Added '9.0.110 SR11' to the bug report template.

* Update PatchVersion from 110 to 120
# Conflicts:
#	eng/Versions.props
#	src/Core/src/Platform/Android/TimePickerExtensions.cs
#	src/Core/src/Platform/Windows/MauiSlider.cs
TamilarasanSF4853 and others added 3 commits September 15, 2025 20:03
* modified slider view model

* added windows snapshots
* Try to specify the emulator again

* Fix uitests

* Just version number

* We need x64 to find app for catalyst tests

* We need x64 for now
# Conflicts:
#	eng/pipelines/device-tests.yml
#	eng/pipelines/ui-tests.yml
* modified test cases and added snapshots

* added mac snapshots
@rmarinho rmarinho merged commit 11ed212 into net10.0 Sep 17, 2025
148 checks passed
@rmarinho rmarinho deleted the update-main-net10 branch September 17, 2025 14:58
@github-actions github-actions bot locked and limited conversation to collaborators Oct 18, 2025
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.