From de01bf704ef92e42e414a75e2a4403c0fe3a6014 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 7 Dec 2025 18:45:06 +1000 Subject: [PATCH] FullscreenUI: Remember the last-opened achievement subset --- src/core/fullscreenui_achievements.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/core/fullscreenui_achievements.cpp b/src/core/fullscreenui_achievements.cpp index 6a10735f3..0bd87f48f 100644 --- a/src/core/fullscreenui_achievements.cpp +++ b/src/core/fullscreenui_achievements.cpp @@ -126,6 +126,8 @@ struct AchievementsLocals rc_client_leaderboard_entry_list_t* leaderboard_nearby_entries; bool is_showing_all_leaderboard_entries = false; bool has_fetched_all_leaderboard_entries = false; + + u32 last_open_subset_id = 0; }; } // namespace @@ -161,6 +163,7 @@ void FullscreenUI::ClearAchievementsState() s_achievements_locals.open_subset = nullptr; s_achievements_locals.subset_info_list.clear(); + s_achievements_locals.last_open_subset_id = 0; s_achievements_locals.most_recent_unlock.reset(); s_achievements_locals.achievement_nearest_completion.reset(); @@ -716,6 +719,7 @@ void FullscreenUI::SetCurrentSubsetID(u32 subset_id) if (info.subset_id == subset_id) { s_achievements_locals.open_subset = &info; + s_achievements_locals.last_open_subset_id = subset_id; QueueResetFocus(FocusResetType::ViewChanged); return; } @@ -744,7 +748,13 @@ void FullscreenUI::CollectSubsetsFromList(const T* list) // hopefully the first will be core... Assert(s_achievements_locals.subset_info_list.size() > 1); - s_achievements_locals.open_subset = &s_achievements_locals.subset_info_list[0]; + const auto it = std::ranges::find_if(s_achievements_locals.subset_info_list, [](const SubsetInfo& info) { + return info.subset_id == s_achievements_locals.last_open_subset_id; + }); + if (it != s_achievements_locals.subset_info_list.end()) + s_achievements_locals.open_subset = &(*it); + else + s_achievements_locals.open_subset = &s_achievements_locals.subset_info_list[0]; } }