aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-02-09 09:13:31 +0100
committerShadowghost <Ghost_of_Stone@web.de>2026-02-09 09:13:31 +0100
commit5dcec831f3bc83761d8170d25eab2cca310ae7cb (patch)
treef38bdefeea4c11abe7bb3d62ecab48c8c002c62b /MediaBrowser.Controller/Entities
parent737abe6f3a48a1fa792ff2d24dad45a04880717f (diff)
Fix naming filter when collapsing into boxsets
Diffstat (limited to 'MediaBrowser.Controller/Entities')
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs25
1 files changed, 25 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 4916ead69a..1b574a2814 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -900,6 +900,11 @@ namespace MediaBrowser.Controller.Entities
if (user is not null)
{
items = CollapseBoxSetItemsIfNeeded(items, query, this, user, ConfigurationManager, CollectionManager);
+
+ // After collapse, BoxSets may have replaced items whose names matched the filter
+ // but the BoxSet's own name may not match. Re-apply name filtering so BoxSets
+ // appear under the correct letter (e.g. "Jump Street" under J, not under #).
+ items = ApplyNameFilter(items, query);
}
var filteredItems = items as IReadOnlyList<BaseItem> ?? items.ToList();
@@ -913,6 +918,26 @@ namespace MediaBrowser.Controller.Entities
return result;
}
+ private static IEnumerable<BaseItem> ApplyNameFilter(IEnumerable<BaseItem> items, InternalItemsQuery query)
+ {
+ if (!string.IsNullOrWhiteSpace(query.NameStartsWith))
+ {
+ items = items.Where(i => i.SortName.StartsWith(query.NameStartsWith, StringComparison.OrdinalIgnoreCase));
+ }
+
+ if (!string.IsNullOrWhiteSpace(query.NameStartsWithOrGreater))
+ {
+ items = items.Where(i => string.Compare(i.SortName, query.NameStartsWithOrGreater, StringComparison.OrdinalIgnoreCase) >= 0);
+ }
+
+ if (!string.IsNullOrWhiteSpace(query.NameLessThan))
+ {
+ items = items.Where(i => string.Compare(i.SortName, query.NameLessThan, StringComparison.OrdinalIgnoreCase) < 0);
+ }
+
+ return items;
+ }
+
private static IEnumerable<BaseItem> CollapseBoxSetItemsIfNeeded(
IEnumerable<BaseItem> items,
InternalItemsQuery query,