Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
80efdb5
Resolved the ActivityIndicator and Navigation failures
Ahamed-Ali Mar 12, 2026
06b6f4a
white space
Ahamed-Ali Mar 12, 2026
240511f
fixed the switch related failure case
Ahamed-Ali Mar 13, 2026
5d5552c
Update ImageViewExtension.cs
SyedAbdulAzeemSF4852 Mar 13, 2026
a5ccf63
Fixed-22320 test failure on candidate.
Vignesh-SF3580 Mar 13, 2026
8ea730e
concerns updated.
Vignesh-SF3580 Mar 13, 2026
ebba3db
Update ObservableGroupedSource.cs
Vignesh-SF3580 Mar 13, 2026
4ffae39
Update StepperHandler.iOS.cs
Vignesh-SF3580 Mar 12, 2026
d4b17bb
Update StepperHandler.iOS.cs
Vignesh-SF3580 Mar 12, 2026
226b04e
android images
TamilarasanSF4853 Mar 13, 2026
8ef6f75
added iOS images
TamilarasanSF4853 Mar 13, 2026
138bb95
added windows images
TamilarasanSF4853 Mar 13, 2026
831a46a
added crop left
TamilarasanSF4853 Mar 13, 2026
0e11fc1
added ios images
TamilarasanSF4853 Mar 13, 2026
950dd7b
added windows condition
TamilarasanSF4853 Mar 13, 2026
5018037
added mac images
TamilarasanSF4853 Mar 13, 2026
894d91a
restrict the failed cases
LogishaSelvarajSF4525 Mar 16, 2026
c4cc2a5
updated the test cases
LogishaSelvarajSF4525 Mar 16, 2026
216e110
android images
TamilarasanSF4853 Mar 16, 2026
b8a1e49
windows image
TamilarasanSF4853 Mar 16, 2026
2351c87
iOS 26 image
TamilarasanSF4853 Mar 16, 2026
c776022
modified test case
TamilarasanSF4853 Mar 16, 2026
f383c95
mac images
TamilarasanSF4853 Mar 16, 2026
4641bc8
updated test case
TamilarasanSF4853 Mar 16, 2026
a6cd507
updated test case
TamilarasanSF4853 Mar 17, 2026
21ba12e
Revert "mac image"
TamilarasanSF4853 Mar 17, 2026
115f646
Revert "updated test case"
TamilarasanSF4853 Mar 17, 2026
4affb29
added failing condition
TamilarasanSF4853 Mar 17, 2026
8836911
Revert "added images"
TamilarasanSF4853 Mar 17, 2026
404670a
added images
TamilarasanSF4853 Mar 18, 2026
18e38e5
Added test changes
TamilarasanSF4853 Mar 18, 2026
bc25f68
added changes
TamilarasanSF4853 Mar 18, 2026
546d6b5
Revert "Update MauiWindowInsetListener.cs"
Ahamed-Ali Mar 18, 2026
58cfadc
Added the valid images
Ahamed-Ali Mar 18, 2026
c6aa50d
Fixed candidate test failures caused by PR #33428. (#34515)
Ahamed-Ali Mar 18, 2026
c51fb00
Updated the images
Ahamed-Ali Mar 19, 2026
a32bd77
Changed to CollectionView2 due to very slight image difference in edges
Ahamed-Ali Mar 19, 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
Original file line number Diff line number Diff line change
Expand Up @@ -986,14 +986,6 @@ void UpdateBarTextColor()
NavigationBar.BackIndicatorTransitionMaskImage = tinted;
}
}
else
{
NavigationBar.CompactAppearance.BackButtonAppearance = null;
NavigationBar.StandardAppearance.BackButtonAppearance = null;
NavigationBar.ScrollEdgeAppearance.BackButtonAppearance = null;
NavigationBar.BackIndicatorImage = null;
NavigationBar.BackIndicatorTransitionMaskImage = null;
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,10 +226,9 @@ void UpdateGroupTracking()

for (int n = 0; n < _groupSource.Count; n++)
{
// Use ICollection (not IEnumerable) so that flat collections whose item type
// implements IEnumerable (e.g. string → IEnumerable<char>) are not mistaken
// for groups, which would render a header/footer per item.
if (_groupSource[n] is ICollection list)
var group = _groupSource[n];

if (group is IEnumerable list && group is not string) // Exclude string: it implements IEnumerable<char> but is a scalar value, not a group
{
var source = ItemsSourceFactory.Create(list, _groupableItemsView, this);
source.HasFooter = _hasGroupFooters;
Expand Down Expand Up @@ -294,10 +293,11 @@ void Add(NotifyCollectionChangedEventArgs args)

foreach (var item in args.NewItems)
{
// Count only real groups (ICollection); flat items like strings must not
// trigger a section insertion — they would cause _groups[groupIndex] to be
// out-of-range after UpdateGroupTracking skips non-ICollection items.
if (item is ICollection)
// Count only real groups (IEnumerable but not string); flat scalar items like strings
// must not trigger a section insertion — they would cause _groups[groupIndex] to be
// out-of-range after UpdateGroupTracking skips non-group items.
// string implements IEnumerable<char> but is a scalar value, not a group.
if (item is IEnumerable and not string)
{
count++;
}
Expand Down Expand Up @@ -332,10 +332,10 @@ void Remove(NotifyCollectionChangedEventArgs args)

foreach (var item in args.OldItems)
{
// Count only real groups (ICollection); flat items like strings must not
// trigger a section removal — they would cause _groups[groupIndex] to be
// out-of-range after UpdateGroupTracking skips non-ICollection items.
if (item is ICollection)
// Count only real groups (IEnumerable but not string); flat scalar items like strings
// must not trigger a section removal — they would cause _groups[groupIndex] to be
// out-of-range after UpdateGroupTracking skips non-group items.
if (item is IEnumerable and not string)
{
count++;
}
Expand Down
25 changes: 14 additions & 11 deletions src/Controls/src/Core/Handlers/Items/iOS/ObservableGroupedSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,9 @@ void ResetGroupTracking()

for (int n = 0; n < _groupSource.Count; n++)
{
if (_groupSource[n] is INotifyCollectionChanged && _groupSource[n] is IEnumerable list)
var group = _groupSource[n];

if (group is INotifyCollectionChanged && group is IEnumerable list && group is not string)
{
_groups.Add(new ObservableItemsSource(list, controller, n));
}
Expand Down Expand Up @@ -240,14 +242,14 @@ void Add(NotifyCollectionChangedEventArgs args)
return;
}

// Only count items that are actual groups (ICollection); flat items like strings or model objects
// must not increment _groupCount or trigger InsertSections on UICollectionView
// Only count items that are actual groups (IEnumerable but not string); flat scalar items
// must not increment _groupCount or trigger InsertSections on UICollectionView.
// string implements IEnumerable<char> but represents a scalar value, not a group.
int count = 0;

foreach (var item in args.NewItems)
{
// Count only ICollection items — string and plain model objects are not groups
if (item is ICollection)
if (item is IEnumerable and not string)
{
count++;
}
Expand Down Expand Up @@ -288,14 +290,13 @@ void Remove(NotifyCollectionChangedEventArgs args)
return;
}

// Only count items that are actual groups (ICollection); flat items must not decrement
// _groupCount or trigger DeleteSections for sections that were never created
// Only count items that are actual groups (IEnumerable but not string); flat scalar items
// must not decrement _groupCount or trigger DeleteSections for sections that were never created.
int count = 0;

foreach (var item in args.OldItems)
{
// Count only ICollection items — string and plain model objects are not groups
if (item is ICollection)
if (item is IEnumerable and not string)
{
count++;
}
Expand Down Expand Up @@ -449,7 +450,9 @@ int GroupsCount()
{
foreach (var group in list)
{
if (group is ICollection)
// Accept any IEnumerable except string (string implements IEnumerable<char>
// but represents a scalar value, not a group).
if (group is IEnumerable and not string)
{
count++;
}
Expand All @@ -459,7 +462,7 @@ int GroupsCount()

foreach (var item in _groupSource)
{
if (item is ICollection)
if (item is IEnumerable and not string)
{
count++;
}
Expand Down
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
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
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
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
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
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
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
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
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
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
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.
21 changes: 11 additions & 10 deletions src/Controls/tests/TestCases.HostApp/Issues/Issue28656.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@
<ContentPage
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Maui.Controls.Sample"
x:Class="Maui.Controls.Sample.Issues.Issue28656">
<Grid RowDefinitions="Auto,*,*">
<Button
Command="{Binding ChangeLayoutCommand}"
AutomationId="ChangeLayoutButton"
Text="Change layout type"/>
<CollectionView Grid.Row="1"
<local:CollectionView2 Grid.Row="1"
ItemsSource="{Binding Items}">
<CollectionView.Triggers>
<local:CollectionView2.Triggers>
<DataTrigger
Binding="{Binding IsGridLayout}"
TargetType="CollectionView"
Expand All @@ -32,8 +33,8 @@
</Setter.Value>
</Setter>
</DataTrigger>
</CollectionView.Triggers>
<CollectionView.ItemTemplate>
</local:CollectionView2.Triggers>
<local:CollectionView2.ItemTemplate>
<DataTemplate x:DataType="{x:Null}">
<Grid>
<Grid
Expand All @@ -50,12 +51,12 @@
</Grid>

</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
<CollectionView Grid.Row="2"
</local:CollectionView2.ItemTemplate>
</local:CollectionView2>
<local:CollectionView2 Grid.Row="2"
ItemsLayout="{Binding ItemsLayout}"
ItemsSource="{Binding Items}">
<CollectionView.ItemTemplate>
<local:CollectionView2.ItemTemplate>
<DataTemplate x:DataType="{x:Null}">
<Grid>
<Grid
Expand All @@ -71,7 +72,7 @@
</Grid>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</local:CollectionView2.ItemTemplate>
</local:CollectionView2>
</Grid>
</ContentPage>
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
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading