1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-16 17:03:18 +08:00

Fix song select not always scrolling to the correct location

This commit is contained in:
Dean Herbert 2019-11-20 19:38:39 +09:00
parent a81c26577d
commit 3ba9f840fd

View File

@ -452,9 +452,6 @@ namespace osu.Game.Screens.Select
if (!itemsCache.IsValid) if (!itemsCache.IsValid)
updateItems(); updateItems();
if (!scrollPositionCache.IsValid)
updateScrollPosition();
// Remove all items that should no longer be on-screen // Remove all items that should no longer be on-screen
scrollableContent.RemoveAll(p => p.Y < visibleUpperBound - p.DrawHeight || p.Y > visibleBottomBound || !p.IsPresent); scrollableContent.RemoveAll(p => p.Y < visibleUpperBound - p.DrawHeight || p.Y > visibleBottomBound || !p.IsPresent);
@ -519,6 +516,14 @@ namespace osu.Game.Screens.Select
updateItem(p); updateItem(p);
} }
protected override void UpdateAfterChildren()
{
base.UpdateAfterChildren();
if (!scrollPositionCache.IsValid)
updateScrollPosition();
}
protected override void Dispose(bool isDisposing) protected override void Dispose(bool isDisposing)
{ {
base.Dispose(isDisposing); base.Dispose(isDisposing);
@ -637,9 +642,12 @@ namespace osu.Game.Screens.Select
private void updateScrollPosition() private void updateScrollPosition()
{ {
if (scrollTarget != null) scroll.ScrollTo(scrollTarget.Value); if (scrollTarget != null)
{
scroll.ScrollTo(scrollTarget.Value);
scrollPositionCache.Validate(); scrollPositionCache.Validate();
} }
}
/// <summary> /// <summary>
/// Computes the x-offset of currently visible items. Makes the carousel appear round. /// Computes the x-offset of currently visible items. Makes the carousel appear round.