From 0405c1c34a18ca1c06be95fa5426f7deeeaf0daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 4 May 2022 13:15:26 +0200 Subject: [PATCH] Ensure selected playlist item is always scrolled into view --- .../Screens/OnlinePlay/DrawableRoomPlaylist.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylist.cs b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylist.cs index d1b21ca1b0..fe654c4ab8 100644 --- a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylist.cs +++ b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylist.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Diagnostics; using System.Linq; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -173,6 +174,21 @@ namespace osu.Game.Screens.OnlinePlay protected virtual DrawableRoomPlaylistItem CreateDrawablePlaylistItem(PlaylistItem item) => new DrawableRoomPlaylistItem(item); + protected override void LoadComplete() + { + base.LoadComplete(); + + SelectedItem.BindValueChanged(_ => scrollToSelection(), true); + } + + private void scrollToSelection() + { + if (SelectedItem.Value == null) return; + + Debug.Assert(ItemMap.TryGetValue(SelectedItem.Value, out var drawableItem)); + ScrollContainer.ScrollIntoView(drawableItem); + } + #region Key selection logic (shared with BeatmapCarousel and RoomsContainer) public bool OnPressed(KeyBindingPressEvent e)