From 520d2d6cfa4b7e3206083e5c68ea8c04879d10b9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 9 Mar 2022 16:06:39 +0900 Subject: [PATCH] Fix beatmap carousel panels accepting input while marked as not-visible This is an issue as carousel panels manage their own animated state. If they are marked as not-visible (done at a higher level, from filtering or update pathways) but clicked while fading out, they will animate back to a visible state but not be marked as visible. No tests for this one as it's probably not worthwhile to test (and hard to do so). Manual testing can be done with the following patch: ```diff diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index c3d340ac61..3372242acc 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -255,7 +255,7 @@ private void beatmapSetsChanged(IRealmCollection sender, ChangeS } foreach (int i in changes.NewModifiedIndices) - UpdateBeatmapSet(sender[i].Detach()); + Scheduler.AddDelayed(() => UpdateBeatmapSet(sender[i].Detach()), 100, true); foreach (int i in changes.InsertedIndices) UpdateBeatmapSet(sender[i].Detach()); ``` - Enter gameplay and adjust beatmap offset then return to song select and click the flashing panel. OR - Enter editor and save then return to song select and click the flashing panel. Closes https://github.com/ppy/osu/discussions/17171. --- osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs index cde3edad39..75bcdedec4 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs @@ -17,6 +17,9 @@ public abstract class DrawableCarouselItem : PoolableDrawable public override bool IsPresent => base.IsPresent || Item?.Visible == true; + public override bool HandlePositionalInput => Item?.Visible == true; + public override bool PropagatePositionalInputSubTree => Item?.Visible == true; + public readonly CarouselHeader Header; ///