Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
402 commits
Select commit Hold shift + click to select a range
ffcb8cf
[Android] ItemsUpdatingScrollMode in CarouselView (#30106)
kubaflo Mar 23, 2026
87825c6
[Android] Fix crash when shared swipe actions are used across multipl…
Shalini-Ashokan Mar 23, 2026
a5d136e
Fix: missing style file in single file bundle (#33692)
ilonatommy Mar 23, 2026
1a44d18
[Testing] Resolved build error in CollectionView scrolling feature te…
TamilarasanSF4853 Mar 24, 2026
47b5050
[Windows] Fix DatePicker CharacterSpacing Property Not Working (#30495)
devanathan-vaithiyanathan Mar 24, 2026
6d7904f
[Windows] Fix image shift in CarouselView when resizing the window (#…
Vignesh-SF3580 Mar 24, 2026
98e1aff
[MacOS] Fixed NullReferenceException when using ImagePaint (#28726)
NirmalKumarYuvaraj Mar 24, 2026
78d7e13
[Android] Fix MapElements.Clear() not removing native elements from G…
KarthikRajaKalaimani Mar 24, 2026
728b5f3
[iOS] Fixed the ConnectivityChanged event is not triggered when toggl…
KarthikRajaKalaimani Mar 24, 2026
d6cb411
[Android] [Windows] Fixed text deletion via the clear icon in SearchB…
Tamilarasan-Paranthaman Mar 24, 2026
b89847a
[Windows] Fixed CollectionView throws NRE when value of IsGrouped pro…
NirmalKumarYuvaraj Mar 24, 2026
00535e4
[Testing] Resolved build error in inflight/current branch (#34616)
TamilarasanSF4853 Mar 24, 2026
3d81bcd
Fix CollectionView record struct selection on Windows (#33488)
jeremy-visionaid Mar 25, 2026
e23c4a2
[Testing] Additional Feature Matrix Event Test Cases for Slider and S…
nivetha-nagalingam Mar 25, 2026
5839cda
[Android] ImageButton CornerRadius not being applied - fix (#30074)
kubaflo Mar 25, 2026
9b90ca8
[Android] Ensure disconnected ItemsViewHandler doesn't hold onto the …
filipnavara Mar 26, 2026
d25828d
[Android] Fix Share.RequestAsync SecurityException on Android 10+ cau…
HarishwaranVijayakumar Mar 26, 2026
f426455
[Windows] Fixed VisualState Setters not working properly for Collecti…
Dhivya-SF4094 Mar 26, 2026
37fc7eb
Fixed BindingContext of the Window TitleBar is not being passed on to…
NirmalKumarYuvaraj Mar 26, 2026
d71a672
[Windows] Fixed Margin doesn't work inside CollectionView EmptyView (…
Dhivya-SF4094 Mar 26, 2026
7034e55
[Windows] Fixed SearchHandler issues (#29520)
Tamilarasan-Paranthaman Mar 26, 2026
e6c8ebb
[iOS , macOS] Fixed Label text cropping when a width request is speci…
NanthiniMahalingam Mar 26, 2026
08da508
[iOS] Alert popup may be displayed on wrong window when modal page na…
kubaflo Mar 26, 2026
cd955c5
Fixed Editor HorizontalTextAlignment does not update at run time (#25…
NirmalKumarYuvaraj Mar 26, 2026
08b73e0
Added the fix
NanthiniMahalingam May 16, 2025
19753b7
Updated the fix
NanthiniMahalingam May 16, 2025
6fe32f5
Added the test case
NanthiniMahalingam May 16, 2025
7deddb1
Updated the test case.
NanthiniMahalingam May 16, 2025
03a9fd7
Updated the fix
NanthiniMahalingam May 16, 2025
01c3fbb
Updated the fix and test case.
NanthiniMahalingam May 19, 2025
274b78b
Updated the test case and added snapshot
NanthiniMahalingam May 27, 2025
0024132
Updated the test case.
NanthiniMahalingam Jun 3, 2025
7d807ed
Added the output images.
NanthiniMahalingam Jun 4, 2025
1ed2936
Updated the fix.
NanthiniMahalingam Jun 18, 2025
8dfb9a5
Updated the test case
NanthiniMahalingam Jan 2, 2026
7c2ceb8
Addressed review Summary
SubhikshaSf4851 Mar 23, 2026
2380dad
revert the Suggestion
SubhikshaSf4851 Mar 26, 2026
f4edce5
Added missed logic on resolving conflict
SubhikshaSf4851 Mar 27, 2026
188ff6f
Fix CollectionView grid spacing updates for first row and column (#34…
KarthikRajaKalaimani Mar 23, 2026
09daf85
Refactor the HybridWebView and properly support complex parameters (#…
mattleibow Apr 8, 2026
a2f1808
CarouselView: Fix cascading PositionChanged/CurrentItemChanged events…
praveenkumarkarunanithi Apr 9, 2026
a60af54
[iOS] Fix Switch ThumbColor reset on iOS 26+ theme changes. (#33953)
Shalini-Ashokan Apr 9, 2026
46c9e71
[Android] Fix WebView scrolling inside ScrollView (#33133)
Shalini-Ashokan Apr 10, 2026
acf34f4
[iOS/macCatalyst] Fix Entry and Editor BackgroundColor reset when set…
Shalini-Ashokan Apr 10, 2026
8b8925f
Fixed Stacklayout is not rendered when clip is applied and StackLayou…
KarthikRajaKalaimani Apr 10, 2026
4072cf5
[Windows] Fix Narrator announcing ContentView children twice when Des…
praveenkumarkarunanithi Apr 10, 2026
0ce2b51
[UIKit] Avoid useless measure invalidation propagation cycles (#33459)
albyrock87 Apr 10, 2026
14281cd
[Android] Fix NRE in ContainerView when Android Context is null durin…
rmarinho Apr 10, 2026
7c5a397
[Windows] Fixed ItemSpacing doesn't work in Carousel View (#30014)
SubhikshaSf4851 Apr 10, 2026
96109ce
Fix RadioButtonGroup not working with ContentView (#34781)
Dhivya-SF4094 Apr 12, 2026
975afe3
BindableObject property access micro-optimizations (#33584)
albyrock87 Apr 12, 2026
632bb13
[Windows] Fix password Entry crash when setting text on empty field (…
praveenkumarkarunanithi Apr 12, 2026
39b6841
[Android, iOS] Button: Fix VisualState properties not restored when l…
BagavathiPerumal Apr 12, 2026
38988d2
[Android] Fix for TimePicker Dialog doesn't update the layout when ro…
HarishwaranVijayakumar Apr 12, 2026
61873fd
Fix Changing Location on a Pin does nothing (#30201)
NirmalKumarYuvaraj Apr 12, 2026
727778b
Fix CollectionView not scrolling to top on iOS status bar tap (#34687)
jfversluis Apr 13, 2026
77e203f
[Windows] Fix for Shell.FlyoutBehavior="Flyout" forces the title heig…
BagavathiPerumal Apr 13, 2026
1665333
[Android, iOS] Fixed TimePicker FlowDirection Not Applied Across Plat…
Dhivya-SF4094 Apr 13, 2026
d71a2f5
[Windows] TabbedPage: Refresh layout when NavigationView size changes…
BagavathiPerumal Apr 13, 2026
275edb4
[Windows] Fixed TimePicker CharacterSpacing issue (#30533)
SubhikshaSf4851 Apr 13, 2026
5aba402
[iOS] Fixed CollectionView Scroll Jitter for TextType HTML Labels (#3…
SubhikshaSf4851 Apr 13, 2026
e345b12
Fix Shell flyout items scrolling behind FlyoutHeader on iOS (#34936)
Qythyx Apr 14, 2026
bb3f13c
Fix Path Rendering Issue Inside StackLayout When Margin Is Set (#28071)
Shalini-Ashokan Apr 14, 2026
be59e87
Fixed FlowDirection property not working on Drawable control and Grap…
Dhivya-SF4094 Apr 15, 2026
d95ea41
[iOS] Fix HEIC images picked via PickPhotosAsync not displayed (#34954)
HarishwaranVijayakumar Apr 15, 2026
ae16fc3
[iOS,MacCatalyst] Fix for SwipeView.Open() throwing an ArgumentExcept…
BagavathiPerumal Apr 16, 2026
04aa4f5
Fix [Android] Title of FlyOutPage is not updating anymore after showi…
KarthikRajaKalaimani Apr 16, 2026
b707a1c
[MacCatalyst] Fix DatePicker Opened/Closed events not being raised (…
SubhikshaSf4851 Apr 16, 2026
2fb7339
Fix CollectionView Header is not visible when ItemsSource is not set …
KarthikRajaKalaimani Apr 16, 2026
7c32cce
[Windows] Fix for RadioButton BorderColor and BorderWidth not updated…
SyedAbdulAzeemSF4852 Apr 17, 2026
0983995
Fix VisualStateGroups duplicate name crash with implicit styles (#347…
StephaneDelcroix Apr 17, 2026
7654cf3
[Testing] SafeArea Feature Matrix Test Cases for ContentPage (#34877)
TamilarasanSF4853 Apr 17, 2026
15cbbef
[Android] Fix CollectionView EmptyView not displayed correctly (#34956)
KarthikRajaKalaimani Apr 17, 2026
8fea463
[iOS, Mac] Fix Shell.CurrentState.Location stale in OnNavigated after…
Vignesh-SF3580 Apr 17, 2026
b293de7
[Windows] Fix Preserve ScrollView offsets when Orientation changes t…
SubhikshaSf4851 Apr 17, 2026
e33b9b8
[iOS] Fix span Tap gesture on wrapped Label lines in iOS 26+ (#34640)
SubhikshaSf4851 Apr 18, 2026
2fb2b6c
Fixed Flyout Not Displayed on Android When FlyoutWidth Is Set Only fo…
NanthiniMahalingam Apr 18, 2026
d33a992
[Windows] Fix for CS1061 build error caused by missing HasMenuBarCont…
BagavathiPerumal Apr 20, 2026
2d3fc2e
[Android] Fix MediaPicker.PickPhotosAsync UnauthorizedAccessException…
HarishwaranVijayakumar Apr 20, 2026
8cc306a
[iOS] Fix ContentPage with ToolbarItem Clicked event leaks when prese…
devanathan-vaithiyanathan Apr 20, 2026
b733c88
[iOS26]Fix BackButtonBehavior_IsEnabled_False_BackButtonDoesNotNaviga…
devanathan-vaithiyanathan Apr 20, 2026
22be650
Extract filename from DisplayName and add extension if missing (#35050)
mattleibow Apr 22, 2026
02a61ab
[Android] Material 3 Fixed BottomNavigationView overflowing in Tabbed…
NirmalKumarYuvaraj Apr 23, 2026
4f9c109
[iOS] Fix Shell page memory leak when using TitleView with x:Name (#3…
Shalini-Ashokan Apr 23, 2026
e739a68
[Windows] Fix CollectionView ScrollTo related test cases failed in CI…
HarishwaranVijayakumar Apr 24, 2026
cd7285d
[iOS & Mac] Fix image tile misalignment in GraphicsView ImagePaint (…
SubhikshaSf4851 Apr 24, 2026
ad95d0e
[Android/iOS] Fix SwipeItem visibility change causing double command …
praveenkumarkarunanithi Apr 25, 2026
4cb34c3
[Material 3] Fix Material 2 color flash in AppBar when switching tabs…
Dhivya-SF4094 Apr 25, 2026
43b711e
[Android] Fix Shell/TabbedPage "More" BottomSheet uses hard-coded M2 …
HarishwaranVijayakumar Apr 25, 2026
c8368b1
[Android] Shell: Fix top-tab unselected text visibility in Material 3…
SyedAbdulAzeemSF4852 Apr 25, 2026
eb71b0d
[iOS] Fix stale bottom safe area after changing SafeAreaEdges with ke…
praveenkumarkarunanithi Apr 26, 2026
da3b59b
[iOS] Fix CollectionView ScrollOffset not resetting when ItemsSource …
SyedAbdulAzeemSF4852 Apr 27, 2026
45cdc33
Fix Shell.Items.Clear() memory leak by disconnecting child handlers o…
Shalini-Ashokan Apr 27, 2026
9fbc68c
[iOS] Fix SearchBar unexpected left margin in iPad windowed mode on 2…
SubhikshaSf4851 Apr 27, 2026
e74dfb9
[iOS&Mac] Fix Shell SearchHandler Query update on Initial load (#35008)
SubhikshaSf4851 Apr 27, 2026
071fb6a
[Android] Fix AlertDialog, ActionSheet, and Prompt render with Materi…
HarishwaranVijayakumar Apr 27, 2026
e04e2bf
[Windows] Fix for Multiple Tabs Being Selected in WinUI TabbedPage (#…
SyedAbdulAzeemSF4852 Apr 27, 2026
780e161
[iOS] Fix RadioButton BackgroundColor bleeding outside CornerRadius (…
SyedAbdulAzeemSF4852 Apr 28, 2026
c6ac00e
[Android] Fix OnBackButtonPressed not invoked for Shell (#35150)
Dhivya-SF4094 Apr 28, 2026
86f382b
[core] Add keyed-DI screenshot extensibility for 3rd-party platform b…
Redth Apr 28, 2026
305dd71
Fix MainThread throwing on custom platform backends (#35070)
Redth Apr 28, 2026
c66672e
Fix Shadow does not honour Styles (#35081)
KarthikRajaKalaimani Apr 28, 2026
86c5cdc
docs: Add UITesting-Guide, ReleasePlanning, and ReleaseProcess to doc…
PureWeen Apr 28, 2026
89dbd62
docs: Fix hardcoded path and add library overview in Essentials.AI RE…
PureWeen Apr 28, 2026
319c823
docs: Update branch reference from net10.0 to net11.0 in DEVELOPMENT.…
PureWeen Apr 28, 2026
a6764e9
Tests: Add 11 missing UnitConverters unit tests (#35191)
PureWeen Apr 28, 2026
25f1f14
[iOS] Fix StaticResource Hot Reload crash on iOS (#35020)
StephaneDelcroix Apr 29, 2026
9919364
[HouseKeeping] Fix inconsistant namespace in HostApp (#35210)
NirmalKumarYuvaraj Apr 29, 2026
55b7e2d
[Windows] Fix WebView blank rendering when used with HybridWebView (#…
SubhikshaSf4851 Apr 30, 2026
10c3396
Add delegate-based alert dialog extensibility convention (no public A…
Redth Apr 30, 2026
9359247
Improve label mapping performance and ensure complete coverage includ…
Tamilarasan-Paranthaman May 1, 2026
f0dc1e4
Add .cab and ReconnectModal.razor.js to signing config (#35026)
jesuszarate May 1, 2026
439e89f
Fix DragGestureRecognizer.DropCompleted event not firing in Android p…
KarthikRajaKalaimani May 1, 2026
3cfabf0
Prevent NullReferenceException in LayoutButton (#35284)
GamesAgeddon May 2, 2026
c893044
[Android] Fix TabbedPage truncating tab titles instead of scrolling (…
Shalini-Ashokan May 3, 2026
be6008a
Fix AOT integration test failures: suppress IL3050/IL2026 for HybridW…
Copilot May 3, 2026
d748c2b
[Windows] Fixed the ContentView clip is not updated when wrapping ins…
Ahamed-Ali May 4, 2026
554eac6
[MacCatalyst] Fix CollectionView Header/Footer Not Expanding to Conte…
KarthikRajaKalaimani May 5, 2026
4d07242
Fix Android layout jump when navigating with IME open and NavBarIsVis…
jpd21122012 May 5, 2026
c2a4a6a
[iOS, Mac] Fix OnBackButtonPressed not invoked for NavigationPage and…
Dhivya-SF4094 May 5, 2026
765f33e
[iOS/MacCatalyst] Fix IndicatorView not updating when IndicatorSize i…
Shalini-Ashokan May 5, 2026
b2e2025
CollectionView selecteditem background lost if collectionview (or par…
KarthikRajaKalaimani May 5, 2026
d2f1f64
Fix typo in Clipboard.shared.cs (#35316)
Deadpikle May 6, 2026
e74b1bc
[Android] Fix LinearGradientBrush rendering as opaque black box (#35299)
SubhikshaSf4851 May 6, 2026
c882478
[iOS] Fix Editor losing scrollability after rotation when CharacterSp…
Vignesh-SF3580 May 6, 2026
2e1d9f6
[Android] Add defensive not null check to SearchHandlerAppearanceTrac…
Transis-Felipe May 6, 2026
06dff7a
Fix: Enable VisualStateManager to set Style property dynamically (#33…
Shalini-Ashokan May 6, 2026
49de947
Fix SwipeViews with invoked properties crash the app in Release mode …
BagavathiPerumal May 6, 2026
a766dbc
[Windows] Fix RefreshView IsRefreshing property not working while bin…
devanathan-vaithiyanathan May 7, 2026
db05110
Fix: Build fails when appicon is an empty (but valid) SVG (#35305)
Shalini-Ashokan May 7, 2026
5f47a27
[Windows] Fix Flyout/Locked mode header collapse regression causing U…
kubaflo May 7, 2026
a58f805
[iOS/macOS] CollectionView: Fix FlowDirection not working on EmptyVie…
Dhivya-SF4094 May 7, 2026
30b0383
[Android/Windows] Fix RadioButton gradient not clearing when switchin…
Shalini-Ashokan May 7, 2026
9092527
[Android] Fix for Shell colors change before navigation completes on …
BagavathiPerumal May 7, 2026
b58dc5a
Fix single modifier for NSMenuItem accelerators (#35351)
jeremy-visionaid May 8, 2026
b6959f4
[iOS/Mac] Fix FlyoutPage RTL FlowDirection is not working (#34831)
devanathan-vaithiyanathan May 8, 2026
607423c
[Windows] Fix "PlatformView cannot be null here" exception during han…
kubaflo May 8, 2026
6e8d8e4
Avoid unnecessary LINQ enumerations (#35272)
jeremy-visionaid May 8, 2026
2950e88
Fix iOS CollectionView stale layout invalidations (#35245)
filipnavara May 8, 2026
f7cefcf
[Windows] Fix COMException when restoring a ScrollView as ContentPage…
Vignesh-SF3580 May 9, 2026
ded10c0
Fix Binding for ListView.IsRefreshing (#28516)
bill2004158 May 9, 2026
8f9d290
[Testing] Replace retryDelay with retryTimeout in UI tests (#35367)
kubaflo May 10, 2026
1686854
Fix iOS 26 Stepper overlap in landscape (#35374)
AdamEssenmacher May 11, 2026
c7c0f57
Fix Android stale ContainerView root leak (#35372)
AdamEssenmacher May 11, 2026
f4140ed
Avoid image source layout invalidation for fixed-size views (#35369)
AdamEssenmacher May 11, 2026
fee7dee
[MacCatalyst] Fix KeyboardAccelerator with Cmd+Shift modifiers breaks…
KarthikRajaKalaimani May 11, 2026
891f653
[iOS/Mac] Fix Entry clear button retaining tint color after TextColor…
SyedAbdulAzeemSF4852 May 11, 2026
f3ad219
[iOS] Fix Picker CharacterSpacing lost after item selection when Titl…
SyedAbdulAzeemSF4852 May 12, 2026
6fb1a71
[iOS] Fix Picker CharacterSpacing ignored on initial load (#34957)
SyedAbdulAzeemSF4852 May 12, 2026
d4ff399
[Android] Fix SearchBar IME full-screen extract mode in landscape ori…
SubhikshaSf4851 May 12, 2026
02566ae
[Windows] Fix Image layout inconsistency caused by async decode race …
praveenkumarkarunanithi May 12, 2026
a525bed
Fix Android grouped CollectionView header/footer rebind leak (#35368)
AdamEssenmacher May 12, 2026
178c28a
[Windows] Fix Shell FlyoutItem not taking full width (#35131)
SubhikshaSf4851 May 12, 2026
d62923b
[iOS 26] Fix SearchBar layout spacing issues for small HeightRequest …
devanathan-vaithiyanathan May 12, 2026
e56a094
[Android, iOS, Catalyst] Fix SearchHandler.BackgroundColor cannot be …
HarishwaranVijayakumar May 12, 2026
514a566
Fix for ApplyQueryAttributes being called on non-destination pages du…
BagavathiPerumal May 13, 2026
f8b16d8
[Android] Fix CollectionView ActivityIndicator not animating after he…
Vignesh-SF3580 May 13, 2026
0b007bc
[Windows] Fix for Item should scrolled based on the GroupHeaderTempla…
SuthiYuvaraj May 13, 2026
4ce538d
[Android] Fix ScrollTo regression when IsGrouped true on CollectionV…
SubhikshaSf4851 May 13, 2026
d1d11c4
[inflight/current] Fix CS0111 duplicate GetNativeCharacterSpacing in …
SyedAbdulAzeemSF4852 May 13, 2026
8f3975a
[Android] Fix for RefreshView triggering pull-to-refresh when scrolli…
BagavathiPerumal May 14, 2026
c232994
[Android] Fix for Android 16 Back button is not working after command…
BagavathiPerumal May 14, 2026
579e4ab
[Android] Fix for predictive back-to-home animation blocked by uncond…
BagavathiPerumal May 14, 2026
44bc5ea
[Android] Fix CollectionView scrolling performance regression (#35379)
devanathan-vaithiyanathan May 14, 2026
e560cf9
Fix Android activity result callback leak (#35436)
AdamEssenmacher May 14, 2026
a51ef1e
[Android] Fix bottom safe area padding dropping to zero when keyboard…
praveenkumarkarunanithi May 14, 2026
77dd049
Backport Test Fixes and Snapshots from SR to Inflight Branch (#35499)
Tamilarasan-Paranthaman May 19, 2026
b267ae9
Optimize parent dynamic resource refresh (#35408)
AdamEssenmacher May 19, 2026
b9f1dd5
Fix - ScrollView.ScrollToAsync(x, y, animated) doesn't work when call…
Shalini-Ashokan May 19, 2026
f999825
[Android] Fix Shell flyout background to follow Material 3 theme colo…
SyedAbdulAzeemSF4852 May 19, 2026
fab47dc
Fix Implicit parameter conversion from integer to byte fails with sou…
KarthikRajaKalaimani May 19, 2026
c3af77c
Fix device test memory (#35487)
pictos May 19, 2026
1889fdb
Fix iOS/Catalyst MapPool retention with MapElements (#35480)
AdamEssenmacher May 19, 2026
4d59186
Fix SwipeItemView command leak (#35510)
AdamEssenmacher May 19, 2026
25618d7
[iOS/Android] Fix SwipeItem.IsVisible not refreshing native swipe it…
SyedAbdulAzeemSF4852 May 19, 2026
e2b03a6
[Android] Fix Shell.FlyoutHeader background incorrect (#35489)
SyedAbdulAzeemSF4852 May 19, 2026
3b51fff
[Android] Fix DatePicker dialog dismisses after the device is rotated…
HarishwaranVijayakumar May 20, 2026
2a68757
[iOS 26] Fix Switch ThumbColor and OffColor not applied on initial l…
SyedAbdulAzeemSF4852 May 20, 2026
2f20d7c
[Android] Fix BottomNavigationView remaining visible for TabbedPage …
Dhivya-SF4094 May 20, 2026
646ef3f
[iOS, Mac] Fix Item spacing not properly applied between items in Hor…
Dhivya-SF4094 May 20, 2026
6b794f0
Fix RemovePossibleQueryString to also strip URL fragments (#35551)
kubaflo May 20, 2026
2a158f2
Merge branch 'main' into inflight/current
kubaflo May 21, 2026
98dae1e
Fix CI failure for CollectionView Scrolling Feature Tests due to PR #…
devanathan-vaithiyanathan May 21, 2026
d303520
Replace JavaFinalize() with Dispose(bool) in GenericAnimatorListener …
jonathanpeppers May 21, 2026
76b9dcb
Fix iOS ProgressBar bounding box (#35507)
AdamEssenmacher May 21, 2026
aa995c2
[iOS/MacCatalyst] Fix Shell.BackgroundColor not applied to bottom Ta…
Shalini-Ashokan May 21, 2026
c1b5303
[Android] Fix for BlazorWebView predictive back callback blocks Andro…
BagavathiPerumal May 21, 2026
c13397c
[Windows] Fix WebView Does Not Inherit App Theme (#35037)
devanathan-vaithiyanathan May 21, 2026
19924c0
Fix for WebView leaks when reusing a shared WebViewSource (#35524)
BagavathiPerumal May 21, 2026
d4244bf
[Windows] Fix SearchHandler does not focus when ShowSoftInputAsync is…
praveenkumarkarunanithi May 21, 2026
46fab0e
Destroy Android WebView on handler disconnect (#35552)
AdamEssenmacher May 21, 2026
bf50629
[Android] Fix Shell FlyoutIcon tint loss after navigation (#35561)
SyedAbdulAzeemSF4852 May 21, 2026
18b6947
[iOS] Fix Shell - opened keyboard on modal page shifts parent page/fr…
KarthikRajaKalaimani May 21, 2026
0fef19e
[iOS & Mac] CarouselViewController2 leaks on iOS/MacCatalyst due to u…
SubhikshaSf4851 May 21, 2026
8fa27ae
Fix intermediate pages not receiving query parameters in multi-page S…
mattleibow May 21, 2026
b01770d
[Testing] Fix for flaky UITests in CI that occasionally fail (#35460)
HarishKumarSF4517 May 22, 2026
b28a137
[Windows] Add Automation Id support for Layouts. (#35562)
SubhikshaSf4851 May 22, 2026
0d28894
Avoid layout diagnostics allocations without listeners (#35475)
AdamEssenmacher May 22, 2026
ff182fa
[iOS/MacCatalyst] Fix Entry clear button appearing dimmed compared to…
SyedAbdulAzeemSF4852 May 22, 2026
63247d2
Fix for Label.FormattedText leaks labels when shared FormattedString …
BagavathiPerumal May 22, 2026
51e3ae7
[Android] Fix AppBar flicker on CheckBox/Switch toggle with Material …
Dhivya-SF4094 May 22, 2026
4e94521
Fix CollectionView.SelectedItems leaks popped views when bound to a r…
HarishwaranVijayakumar May 22, 2026
686324e
Fix SwipeView memory leak when SwipeItems are reused or replaced (#35…
Vignesh-SF3580 May 22, 2026
81f31bb
Fix polygon points collection handler leak (#35526)
AdamEssenmacher May 23, 2026
2c62a98
doc: Add paragraph to README.md explaining how to fetch the `maui` pr…
durandt May 24, 2026
3342d61
Fix for Android - Dynamic Updates to CollectionView Header/Footer and…
SuthiYuvaraj May 24, 2026
e118098
[Windows] Fix Shell title bar overlap with window controls in RTL mod…
Shalini-Ashokan May 25, 2026
d1fb297
[Android] Fix Shadow property affecting transform matrix. (#32962)
Shalini-Ashokan May 25, 2026
041d947
Fix pill-shaped focus ring on macOS 26 (#35393)
Dhivya-SF4094 May 25, 2026
5433d99
[Mac, iOS, Windows] Fix for inconsistent Text-to-Speech rate behavior…
HarishwaranVijayakumar May 25, 2026
c55d7f9
[macOS] Fix IsEnabled property false not working on MenuBarItem (#35546)
devanathan-vaithiyanathan May 25, 2026
04e8b8a
Revert [Android, iOS] - Flyout icon should remain visible when a page…
praveenkumarkarunanithi May 25, 2026
e1100d7
Add default .gitignore to MAUI project templates (#34862)
davidortinau May 25, 2026
c879aed
[Windows/Android] FlexLayout: Fix wrap misalignment due to floating-p…
SuthiYuvaraj May 26, 2026
71b7835
[Windows] Fix CarouselView EmptyView display when filtering to zero i…
Shalini-Ashokan May 26, 2026
e6c00d6
Merge PR base into branch
Copilot May 26, 2026
ea657dd
Limit PR diff to CarouselView changes
Copilot May 26, 2026
8a521a3
Reapply CarouselView fix on current base
Copilot May 26, 2026
6fcccf9
Clean up Issue29420 test whitespace
Copilot May 26, 2026
d1c18cd
Bumps Syncfusion.Maui.Toolkit dependency to version 1.0.10 (#35608)
PaulAndersonS May 26, 2026
4905060
[Android] Fix BlazorWebView back callback can swallow the first Back …
devanathan-vaithiyanathan May 26, 2026
6c84def
[Windows, Android] Fix Border Color and Border Width Not applying for…
HarishwaranVijayakumar May 26, 2026
721e8f0
Fix Android Shell top inset when nav bar is hidden (#35555)
ne0rrmatrix May 27, 2026
54586b1
Fix Android map view lifecycle cleanup (#35476)
AdamEssenmacher May 27, 2026
d60d937
Fix Border.StrokeDashArray leaks dashed Borders when using a shared A…
devanathan-vaithiyanathan May 27, 2026
e3a793a
Fix Changing Content property of ShellContent doesn't change visual c…
devanathan-vaithiyanathan May 27, 2026
a1129b0
[iOS] Slider: Scale ThumbImageSource to match default thumb size (#34…
NirmalKumarYuvaraj May 27, 2026
38489b8
[Testing] Include more testing around Windows Image Aspect recent fix…
kubaflo May 27, 2026
d066326
[Android/iOS] Fix IsEnabled=False on CollectionView not working (#27749)
devanathan-vaithiyanathan May 27, 2026
70407a9
Fixed a NullReferenceException when starting application with empty s…
Shalini-Ashokan May 27, 2026
92a0a1a
Fix Entry select all text on refocus not working on WinUI (#35383)
kubaflo May 27, 2026
df165f4
Windows: Ensure layouts without background participate in hit testing…
jpd21122012 May 27, 2026
6ee0052
[inflight/current] Fixes a CS0111 build failure in RadioButton.cs cau…
HarishwaranVijayakumar May 27, 2026
b7cbcf5
Fix Android app bar inset background coloring (#35601)
ne0rrmatrix May 27, 2026
6706ac2
Fix Android map element options retention (#35634)
AdamEssenmacher May 28, 2026
8b61e63
[Android] Fix Switch Shadow Does Not Follow Thumb when Toggle On or O…
Dhivya-SF4094 May 28, 2026
9a4b5ec
Revert PR #30068 — Fix FontImageSource centering regression on Window…
Shalini-Ashokan May 28, 2026
6cf3a07
[Android] Fix Capture video crashes after stopping recording on Andro…
HarishwaranVijayakumar May 28, 2026
c48946e
[Android] Fix screenshot from WebView content not working (#35384)
kubaflo May 28, 2026
776f9cd
[Windows] Border: Add AutomationPeer support (#35577)
Vignesh-SF3580 May 29, 2026
6c48c92
[Android & iOS] TabbedPage leaks with shared GradientBrush. (#35543)
SubhikshaSf4851 May 29, 2026
a6f127c
Fix incorrect SDK provisioning commands in integration-tests instruct…
davidnguyen-tech May 29, 2026
ada8ace
[Windows] Fix for Picker CharacterSpacing Not Being Applied to Title …
SyedAbdulAzeemSF4852 May 30, 2026
896b416
[iOS] Fix VoiceOver dropping child labels on layouts with SemanticPro…
Vignesh-SF3580 May 30, 2026
ae0885a
Fix hardcoded version of Microsoft.DotNet.XHarness.TestRunners.Xunit …
akoeplinger May 30, 2026
bec1bb7
Fix Picker SelectedIndex deferred initialization (#35629)
AdamEssenmacher May 30, 2026
3548ccd
Merge inflight/current into PR branch
Copilot May 30, 2026
59ab8cc
Revert accidental inflight merge
Copilot May 30, 2026
d004678
Retarget PR diff to main
Copilot May 30, 2026
0eb3b4c
Merge main into PR branch
Copilot May 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 83 additions & 31 deletions src/Controls/src/Core/Handlers/Items/CarouselViewHandler.Windows.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
using WScrollMode = Microsoft.UI.Xaml.Controls.ScrollMode;
using WSnapPointsAlignment = Microsoft.UI.Xaml.Controls.Primitives.SnapPointsAlignment;
using WSnapPointsType = Microsoft.UI.Xaml.Controls.SnapPointsType;
using WSetter = Microsoft.UI.Xaml.Setter;
using WStyle = Microsoft.UI.Xaml.Style;

namespace Microsoft.Maui.Controls.Handlers.Items
{
Expand All @@ -26,6 +28,7 @@ public partial class CarouselViewHandler : ItemsViewHandler<CarouselView>
WScrollBarVisibility? _verticalScrollBarVisibilityWithoutLoop;
Size _currentSize;
bool _isCarouselViewReady;
bool _isInternalPositionUpdate;
int _gotoPosition = -1;
NotifyCollectionChangedEventHandler _collectionChanged;
readonly WeakNotifyCollectionChangedProxy _proxy = new();
Expand Down Expand Up @@ -146,7 +149,7 @@ protected override ItemsViewScrolledEventArgs ComputeVisibleIndexes(ItemsViewScr
{
args = base.ComputeVisibleIndexes(args, orientation, advancing);

if (ItemsView.Loop && ItemsView.ItemsSource is not null)
if (ItemsView.Loop && ItemsView.ItemsSource is not null && ItemCount > 0)
{
args.FirstVisibleItemIndex %= ItemCount;
args.CenterItemIndex %= ItemCount;
Expand All @@ -156,6 +159,21 @@ protected override ItemsViewScrolledEventArgs ComputeVisibleIndexes(ItemsViewScr
return args;
}

protected override void UpdateEmptyViewVisibility()
{
if (ItemsView?.Loop == true)
{
bool isEmpty = (CollectionViewSource?.View?.Count ?? 0) == 0;
var targetTemplate = isEmpty ? null : CarouselItemsViewTemplate;
if (ListViewBase.ItemTemplate != targetTemplate)
{
ListViewBase.ItemTemplate = targetTemplate;
}
}

base.UpdateEmptyViewVisibility();
}

ListViewBase CreateCarouselListLayout(ItemsLayoutOrientation layoutOrientation)
{
UI.Xaml.Controls.ListView listView;
Expand All @@ -165,7 +183,8 @@ ListViewBase CreateCarouselListLayout(ItemsLayoutOrientation layoutOrientation)
listView = new FormsListView()
{
Style = (UI.Xaml.Style)WApp.Current.Resources["HorizontalCarouselListStyle"],
ItemsPanel = (ItemsPanelTemplate)WApp.Current.Resources["HorizontalListItemsPanel"]
ItemsPanel = (ItemsPanelTemplate)WApp.Current.Resources["HorizontalListItemsPanel"],
ItemContainerStyle = GetItemContainerStyle(true)
};

ScrollViewer.SetHorizontalScrollBarVisibility(listView, WScrollBarVisibility.Auto);
Expand All @@ -175,7 +194,8 @@ ListViewBase CreateCarouselListLayout(ItemsLayoutOrientation layoutOrientation)
{
listView = new FormsListView()
{
Style = (UI.Xaml.Style)WApp.Current.Resources["VerticalCarouselListStyle"]
Style = (UI.Xaml.Style)WApp.Current.Resources["VerticalCarouselListStyle"],
ItemContainerStyle = GetItemContainerStyle(false)
};

ScrollViewer.SetHorizontalScrollBarVisibility(listView, WScrollBarVisibility.Disabled);
Expand Down Expand Up @@ -289,7 +309,7 @@ double GetItemWidth()

if (CarouselItemsLayout.Orientation == ItemsLayoutOrientation.Horizontal)
{
itemWidth = ListViewBase.ActualWidth - ItemsView.PeekAreaInsets.Left - ItemsView.PeekAreaInsets.Right;
itemWidth = ListViewBase.ActualWidth - ItemsView.PeekAreaInsets.Left - ItemsView.PeekAreaInsets.Right - ItemsView.ItemsLayout.ItemSpacing;
}

return Math.Max(itemWidth, 0);
Expand All @@ -301,7 +321,7 @@ double GetItemHeight()

if (CarouselItemsLayout.Orientation == ItemsLayoutOrientation.Vertical)
{
itemHeight = ListViewBase.ActualHeight - ItemsView.PeekAreaInsets.Top - ItemsView.PeekAreaInsets.Bottom;
itemHeight = ListViewBase.ActualHeight - ItemsView.PeekAreaInsets.Top - ItemsView.PeekAreaInsets.Bottom - ItemsView.ItemsLayout.ItemSpacing;
}

return Math.Max(itemHeight, 0);
Expand Down Expand Up @@ -334,9 +354,7 @@ bool IsValidPosition(int position)
void SetCarouselViewPosition(int position)
{
if (ItemCount == 0)
{
return;
}

if (!IsValidPosition(position))
return;
Expand Down Expand Up @@ -408,7 +426,10 @@ void UpdateCurrentItem()

var currentItemPosition = GetItemPositionInCarousel(ItemsView.CurrentItem);

if (currentItemPosition < 0 || currentItemPosition >= ItemCount)
bool isOutOfBounds = currentItemPosition < 0 || currentItemPosition >= ItemCount;
bool isSamePosition = ItemsView.Position == currentItemPosition;

if (isOutOfBounds || isSamePosition)
{
return;
}
Expand All @@ -418,7 +439,9 @@ void UpdateCurrentItem()
return;
}

ItemsView.ScrollTo(currentItemPosition, position: ScrollToPosition.Center, animate: ItemsView.AnimateCurrentItemChanges);
// Disable animation during collection changes to prevent cascading scroll events
var animate = ItemsView.AnimateCurrentItemChanges && !_isInternalPositionUpdate;
ItemsView.ScrollTo(currentItemPosition, position: ScrollToPosition.Center, animate: animate);
}

void UpdatePosition()
Expand Down Expand Up @@ -566,34 +589,53 @@ void OnScrollViewChanged(object sender, ScrollViewerViewChangedEventArgs e)

void OnCollectionItemsSourceChanged(object sender, NotifyCollectionChangedEventArgs e)
{
var carouselPosition = ItemsView.Position;
var currentItemPosition = GetItemPositionInCarousel(ItemsView.CurrentItem);
var count = (sender as IList).Count;
// Set flag to disable animation during collection changes
_isInternalPositionUpdate = true;

bool removingCurrentElement = currentItemPosition == -1;
bool removingLastElement = e.OldStartingIndex == count;
bool removingFirstElement = e.OldStartingIndex == 0;
bool removingCurrentElementButNotFirst = removingCurrentElement && removingLastElement && ItemsView.Position > 0;

if (removingCurrentElementButNotFirst)
try
{
carouselPosition = ItemsView.Position - 1;
var carouselPosition = ItemsView.Position;
var currentItemPosition = GetItemPositionInCarousel(ItemsView.CurrentItem);
var count = (sender as IList).Count;

}
else if (removingFirstElement && !removingCurrentElement)
{
carouselPosition = currentItemPosition;
}
bool removingCurrentElement = currentItemPosition == -1;
bool removingLastElement = e.OldStartingIndex == count;
bool removingFirstElement = e.OldStartingIndex == 0;
bool removingCurrentElementButNotFirst = removingCurrentElement && removingLastElement && ItemsView.Position > 0;

// If we are adding a new item make sure to maintain the CurrentItemPosition
else if (e.Action == NotifyCollectionChangedAction.Add
&& currentItemPosition != -1)
if (removingCurrentElementButNotFirst)
{
carouselPosition = ItemsView.Position - 1;
}
else if (removingFirstElement && !removingCurrentElement)
{
carouselPosition = currentItemPosition;
}

// If we are adding a new item make sure to maintain the CurrentItemPosition
else if (e.Action == NotifyCollectionChangedAction.Add
&& currentItemPosition != -1)
{
carouselPosition = currentItemPosition;
}

if (ItemsView.ItemsUpdatingScrollMode == ItemsUpdatingScrollMode.KeepLastItemInView)
{
carouselPosition = count == 0 ? 0 : count - 1;
}
else if (ItemsView.ItemsUpdatingScrollMode == ItemsUpdatingScrollMode.KeepItemsInView)
{
carouselPosition = 0;
}

SetCarouselViewCurrentItem(carouselPosition);
SetCarouselViewPosition(carouselPosition);
}
finally
{
carouselPosition = currentItemPosition;
// Reset flag after collection operations complete
_isInternalPositionUpdate = false;
}

SetCarouselViewCurrentItem(carouselPosition);
SetCarouselViewPosition(carouselPosition);
}

void OnListViewSizeChanged(object sender, SizeChangedEventArgs e) => Resize(e.NewSize);
Expand Down Expand Up @@ -639,5 +681,15 @@ void InvalidateItemSize()
item.ItemWidth = itemWidth;
}
}

WStyle GetItemContainerStyle(bool isHorizontalLayout)
{
var h = CarouselItemsLayout?.ItemSpacing > 0 ? (CarouselItemsLayout.ItemSpacing) / 2 : 0;
var padding = isHorizontalLayout ? WinUIHelpers.CreateThickness(h, 0, h, 0) : WinUIHelpers.CreateThickness(0, h, 0, h);

var style = new WStyle(typeof(ListViewItem));
style.Setters.Add(new WSetter(Control.PaddingProperty, padding));
return style;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,11 @@ void OnItemsVectorChanged(global::Windows.Foundation.Collections.IObservableVect
return;
}

var itemsCount = items.Count;
// When looping is enabled in CarouselView, Items. Count returns
// the FakeCount instead of the actual item count.
// Use items.Count for CollectionView to account for this
// behavior: otherwise, use ItemCount for other types.
var itemsCount = VirtualView is CollectionView ? items.Count : ItemCount;

if (itemsCount == 0)
{
Expand Down Expand Up @@ -703,7 +707,7 @@ object FindBoundItem(ScrollToRequestEventArgs args)
return null;
}

protected virtual int ItemCount => CollectionViewSource.View.Count;
protected virtual int ItemCount => CollectionViewSource is not null ? CollectionViewSource.View.Count : 0;

protected virtual object GetItem(int index)
{
Expand Down
76 changes: 76 additions & 0 deletions src/Controls/tests/TestCases.HostApp/Issues/Issue29420.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using System.Collections.ObjectModel;

namespace Maui.Controls.Sample.Issues;
[Issue(IssueTracker.Github, 29420, "KeepLastInView Not Working as Expected in CarouselView", PlatformAffected.UWP)]
public class Issue29420 : ContentPage
{
public Issue29420()
{
var count = 0;
var verticalStackLayout = new VerticalStackLayout();
var carouselItems = new ObservableCollection<string>
{
"Item 0", "Item 1","Item 2", "Item 3", "Item 4", "Item 5",

};

CarouselView carouselView = new CarouselView
{
ItemsSource = carouselItems,
AutomationId = "CarouselView",
Loop = false,
ItemsUpdatingScrollMode = ItemsUpdatingScrollMode.KeepLastItemInView,

ItemTemplate = new DataTemplate(() =>
{
var grid = new Grid
{
Padding = 10
};

var label = new Label
{
VerticalOptions = LayoutOptions.Center,
HorizontalOptions = LayoutOptions.Center,
FontSize = 18,
Background = Colors.Pink,
};
label.SetBinding(Label.TextProperty, ".");
label.SetBinding(Label.AutomationIdProperty, ".");

grid.Children.Add(label);
return grid;
}),
};

var insertButton = new Button
{
Text = "Insert item at 0th index",
AutomationId = "InsertButton",
Margin = new Thickness(20),
};

var addButton = new Button
{
Text = "Add item at end",
AutomationId = "AddButton",
Margin = new Thickness(20),
};

insertButton.Clicked += (sender, e) =>
{
carouselItems.Insert(0, "NewItem" + count.ToString());
count++;
};

addButton.Clicked += (sender, e) =>
{
carouselItems.Add("NewItem");
};

verticalStackLayout.Children.Add(insertButton);
verticalStackLayout.Children.Add(addButton);
verticalStackLayout.Children.Add(carouselView);
Content = verticalStackLayout;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#if TEST_FAILS_ON_ANDROID && TEST_FAILS_ON_IOS && TEST_FAILS_ON_CATALYST // CarouselView Fails to Keep Last Item in View on iOS, android and macOS https://github.com/dotnet/maui/issues/18029, https://github.com/dotnet/maui/issues/29415
using NUnit.Framework;
using UITest.Appium;
using UITest.Core;

namespace Microsoft.Maui.TestCases.Tests.Issues;
public class Issue29420 : _IssuesUITest
{
public override string Issue => "KeepLastInView Not Working as Expected in CarouselView";

public Issue29420(TestDevice device) : base(device)
{ }

[Test, Order(1)]
[Category(UITestCategories.CarouselView)]
public async Task VerifyCarouselViewKeepLastInViewOnItemInsert()
{
App.WaitForElement("CarouselView");
App.Tap("InsertButton");
await Task.Delay(200); // Wait for the scrollbar to disappear.
VerifyScreenshot("CarouselViewKeepLastInViewOnItemInsert");
}

[Test, Order(2)]
[Category(UITestCategories.CarouselView)]
public async Task VerifyCarouselViewKeepLastInViewOnItemAdd()
{
App.WaitForElement("CarouselView");
App.Tap("AddButton");
await Task.Delay(200); // Wait for the scrollbar to disappear.
VerifyScreenshot("CarouselViewKeepLastInViewOnItemAdd");
}
}
#endif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading