Filtering bugfix

This commit is contained in:
Mbucari 2023-04-10 16:42:10 -06:00
parent 84b2996102
commit 9a663fda15
3 changed files with 5 additions and 12 deletions

View File

@ -322,7 +322,7 @@ namespace LibationAvalonia.ViewModels
{ {
var filterResults = SOURCE.FilterEntries(FilterString); var filterResults = SOURCE.FilterEntries(FilterString);
if (filterResults is not null && FilteredInGridEntries.Intersect(filterResults).Count() != FilteredInGridEntries.Count) if (filterResults is not null && (FilteredInGridEntries is null || FilteredInGridEntries.Intersect(filterResults).Count() != FilteredInGridEntries.Count))
{ {
FilteredInGridEntries = filterResults; FilteredInGridEntries = filterResults;
await refreshGrid(); await refreshGrid();

View File

@ -56,9 +56,6 @@ namespace LibationWinForms.GridView
} }
} }
/// <summary>When true, itms will not be checked filtered by search criteria on item changed<summary>
public bool SuspendFilteringOnUpdate { get; set; }
protected RowComparer Comparer { get; } = new(); protected RowComparer Comparer { get; } = new();
protected override bool SupportsSortingCore => true; protected override bool SupportsSortingCore => true;
protected override bool SupportsSearchingCore => true; protected override bool SupportsSearchingCore => true;
@ -112,7 +109,7 @@ namespace LibationWinForms.GridView
foreach (var newRemove in toRemoveEntries) foreach (var newRemove in toRemoveEntries)
{ {
FilterRemoved.Add(newRemove); FilterRemoved.Add(newRemove);
Items.Remove(newRemove); base.Remove(newRemove);
} }
} }
@ -138,7 +135,7 @@ namespace LibationWinForms.GridView
continue; continue;
FilterRemoved.Remove(addBack); FilterRemoved.Remove(addBack);
Items.Add(addBack); Add(addBack);
} }
} }
} }
@ -147,7 +144,7 @@ namespace LibationWinForms.GridView
{ {
var filterResults = AllItems().FilterEntries(FilterString); var filterResults = AllItems().FilterEntries(FilterString);
if (filterResults is not null && FilteredInGridEntries.Intersect(filterResults).Count() != FilteredInGridEntries.Count) if (filterResults is not null && (FilteredInGridEntries is null || FilteredInGridEntries.Intersect(filterResults).Count() != FilteredInGridEntries.Count))
{ {
FilteredInGridEntries = filterResults; FilteredInGridEntries = filterResults;
refreshEntries(); refreshEntries();
@ -181,7 +178,7 @@ namespace LibationWinForms.GridView
{ {
var sindex = Items.IndexOf(sEntry); var sindex = Items.IndexOf(sEntry);
foreach (var episode in sEntry.Children.Intersect(FilterRemoved.BookEntries()).ToList()) foreach (var episode in Comparer.OrderEntries(sEntry.Children.Intersect(FilterRemoved.BookEntries())).ToList())
{ {
if (FilteredInGridEntries?.Contains(episode) ?? true) if (FilteredInGridEntries?.Contains(episode) ?? true)
{ {

View File

@ -195,8 +195,6 @@ namespace LibationWinForms.GridView
string existingFilter = syncBindingSource.Filter; string existingFilter = syncBindingSource.Filter;
Filter(null); Filter(null);
bindingList.SuspendFilteringOnUpdate = true;
//Add absent entries to grid, or update existing entry //Add absent entries to grid, or update existing entry
var allEntries = bindingList.AllItems().BookEntries(); var allEntries = bindingList.AllItems().BookEntries();
@ -219,8 +217,6 @@ namespace LibationWinForms.GridView
} }
} }
bindingList.SuspendFilteringOnUpdate = false;
//Re-apply filter after adding new/updating existing books to capture any changes //Re-apply filter after adding new/updating existing books to capture any changes
Filter(existingFilter); Filter(existingFilter);