From 7a4d9c7c9a63ae68a54e17495b3960ab6a562ab6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 28 May 2025 18:31:26 +0900 Subject: [PATCH 1/2] SongSelectV2: Fix carousel loading state looking out of place --- .../SongSelectV2/BeatmapCarouselTestScene.cs | 18 ++++++++++-------- .../SongSelectV2/TestSceneBeatmapCarousel.cs | 9 +++++++++ osu.Game/Screens/SelectV2/BeatmapCarousel.cs | 10 ++++++++-- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelectV2/BeatmapCarouselTestScene.cs b/osu.Game.Tests/Visual/SongSelectV2/BeatmapCarouselTestScene.cs index 1ac36b0cee..be2dae79af 100644 --- a/osu.Game.Tests/Visual/SongSelectV2/BeatmapCarouselTestScene.cs +++ b/osu.Game.Tests/Visual/SongSelectV2/BeatmapCarouselTestScene.cs @@ -365,17 +365,19 @@ namespace osu.Game.Tests.Visual.SongSelectV2 public partial class TestBeatmapCarousel : BeatmapCarousel { + public int FilterDelay = 0; + public IEnumerable PostFilterBeatmaps = null!; - protected override Task> FilterAsync(bool clearExistingPanels = false) + protected override async Task> FilterAsync(bool clearExistingPanels = false) { - var filterAsync = base.FilterAsync(clearExistingPanels); - filterAsync.ContinueWith(result => - { - if (result.IsCompletedSuccessfully) - PostFilterBeatmaps = result.GetResultSafely().Select(i => i.Model).OfType(); - }); - return filterAsync; + var items = await base.FilterAsync(clearExistingPanels); + + if (FilterDelay != 0) + await Task.Delay(FilterDelay); + + PostFilterBeatmaps = items.Select(i => i.Model).OfType(); + return items; } } } diff --git a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs index 73e0e5aaa8..c2afd83894 100644 --- a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs +++ b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NUnit.Framework; +using osu.Framework.Testing; using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Screens.Select.Filter; @@ -48,6 +49,14 @@ namespace osu.Game.Tests.Visual.SongSelectV2 RemoveAllBeatmaps(); } + [Test] + [Explicit] + public void TestLoadingDisplay() + { + AddStep("induce slow filtering", () => Carousel.FilterDelay = 2000); + SortAndGroupBy(SortMode.Artist, GroupMode.NoGrouping); + } + [Test] [Explicit] public void TestAddRemoveRepeatedOps() diff --git a/osu.Game/Screens/SelectV2/BeatmapCarousel.cs b/osu.Game/Screens/SelectV2/BeatmapCarousel.cs index 5642685b23..1a8a13ba83 100644 --- a/osu.Game/Screens/SelectV2/BeatmapCarousel.cs +++ b/osu.Game/Screens/SelectV2/BeatmapCarousel.cs @@ -17,6 +17,7 @@ using osu.Framework.Threading; using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Database; +using osu.Game.Graphics; using osu.Game.Graphics.Carousel; using osu.Game.Graphics.UserInterface; using osu.Game.Screens.Select; @@ -77,7 +78,7 @@ namespace osu.Game.Screens.SelectV2 grouping = new BeatmapCarouselFilterGrouping(() => Criteria), }; - AddInternal(loading = new LoadingLayer(dimBackground: true)); + AddInternal(loading = new LoadingLayer()); } [BackgroundDependencyLoader] @@ -428,13 +429,18 @@ namespace osu.Game.Screens.SelectV2 Criteria = criteria; - loadingDebounce ??= Scheduler.AddDelayed(() => loading.Show(), 250); + loadingDebounce ??= Scheduler.AddDelayed(() => + { + Scroll.FadeColour(OsuColour.Gray(0.5f), 1000, Easing.OutQuint); + loading.Show(); + }, 250); FilterAsync(resetDisplay).ContinueWith(_ => Schedule(() => { loadingDebounce?.Cancel(); loadingDebounce = null; + Scroll.FadeColour(OsuColour.Gray(1f), 500, Easing.OutQuint); loading.Hide(); })); } From 86ae5043c194bb78fd7b30aed6040944ca82f663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 28 May 2025 12:36:38 +0200 Subject: [PATCH 2/2] Remove unused using --- osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs index c2afd83894..56351eed97 100644 --- a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs +++ b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarousel.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NUnit.Framework; -using osu.Framework.Testing; using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Screens.Select.Filter;