mirror of
https://github.com/ppy/osu.git
synced 2025-03-06 16:37:24 +08:00
Force recreating sections container when loading new user to avoid weird UX when scrolled away
This commit is contained in:
parent
43d08f702a
commit
adb803c7a9
@ -99,9 +99,8 @@ namespace osu.Game.Overlays
|
|||||||
if (user.OnlineID == Header.User.Value?.User.Id && ruleset?.MatchesOnlineID(Header.User.Value?.Ruleset) == true)
|
if (user.OnlineID == Header.User.Value?.User.Id && ruleset?.MatchesOnlineID(Header.User.Value?.Ruleset) == true)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sectionsContainer?.ScrollToTop();
|
if (sectionsContainer != null)
|
||||||
sectionsContainer?.Clear();
|
sectionsContainer.ExpandableHeader = null;
|
||||||
tabs?.Clear();
|
|
||||||
|
|
||||||
userReq?.Cancel();
|
userReq?.Cancel();
|
||||||
lastSection = null;
|
lastSection = null;
|
||||||
@ -119,7 +118,7 @@ namespace osu.Game.Overlays
|
|||||||
}
|
}
|
||||||
: Array.Empty<ProfileSection>();
|
: Array.Empty<ProfileSection>();
|
||||||
|
|
||||||
setupBaseContent(OverlayColourScheme.Pink);
|
setupBaseContent(OverlayColourScheme.Pink, forceContentRecreation: true);
|
||||||
|
|
||||||
if (API.State.Value != APIState.Offline)
|
if (API.State.Value != APIState.Offline)
|
||||||
{
|
{
|
||||||
@ -138,7 +137,7 @@ namespace osu.Game.Overlays
|
|||||||
// reuse header and content if same colour scheme, otherwise recreate both.
|
// reuse header and content if same colour scheme, otherwise recreate both.
|
||||||
var profileScheme = (OverlayColourScheme?)loadedUser.ProfileHue ?? OverlayColourScheme.Pink;
|
var profileScheme = (OverlayColourScheme?)loadedUser.ProfileHue ?? OverlayColourScheme.Pink;
|
||||||
if (profileScheme != ColourProvider.ColourScheme)
|
if (profileScheme != ColourProvider.ColourScheme)
|
||||||
setupBaseContent(profileScheme);
|
setupBaseContent(profileScheme, forceContentRecreation: false);
|
||||||
|
|
||||||
var actualRuleset = rulesets.GetRuleset(userRuleset?.ShortName ?? loadedUser.PlayMode).AsNonNull();
|
var actualRuleset = rulesets.GetRuleset(userRuleset?.ShortName ?? loadedUser.PlayMode).AsNonNull();
|
||||||
|
|
||||||
@ -164,16 +163,18 @@ namespace osu.Game.Overlays
|
|||||||
loadingLayer.Hide();
|
loadingLayer.Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupBaseContent(OverlayColourScheme colourScheme)
|
private void setupBaseContent(OverlayColourScheme colourScheme, bool forceContentRecreation)
|
||||||
{
|
{
|
||||||
var previousColourScheme = ColourProvider.ColourScheme;
|
var previousColourScheme = ColourProvider.ColourScheme;
|
||||||
ColourProvider.ChangeColourScheme(colourScheme);
|
ColourProvider.ChangeColourScheme(colourScheme);
|
||||||
|
|
||||||
if (sectionsContainer != null && colourScheme == previousColourScheme)
|
if (colourScheme != previousColourScheme)
|
||||||
return;
|
{
|
||||||
|
|
||||||
RecreateHeader();
|
RecreateHeader();
|
||||||
UpdateColours();
|
UpdateColours();
|
||||||
|
}
|
||||||
|
else if (!forceContentRecreation)
|
||||||
|
return;
|
||||||
|
|
||||||
Child = new OsuContextMenuContainer
|
Child = new OsuContextMenuContainer
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user