mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
(Ozone) Remember selection per main tabs (#14526)
This commit is contained in:
parent
840c4481ab
commit
0cebebbfdc
@ -114,6 +114,7 @@
|
||||
#endif
|
||||
|
||||
#define OZONE_WIGGLE_DURATION 15
|
||||
#define OZONE_TAB_MAX_LENGTH 255
|
||||
|
||||
/* Returns true if specified entry is currently
|
||||
* displayed on screen */
|
||||
@ -455,6 +456,7 @@ struct ozone_handle
|
||||
size_t categories_selection_ptr; /* active tab id */
|
||||
size_t categories_active_idx_old;
|
||||
size_t playlist_index;
|
||||
size_t tab_selection[OZONE_TAB_MAX_LENGTH];
|
||||
|
||||
size_t selection; /* currently selected entry */
|
||||
size_t selection_old; /* previously selected entry (for fancy animation) */
|
||||
@ -3770,6 +3772,9 @@ static void ozone_go_to_sidebar(ozone_handle_t *ozone,
|
||||
ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar;
|
||||
ozone->cursor_in_sidebar = true;
|
||||
|
||||
/* Remember last selection per tab */
|
||||
ozone->tab_selection[ozone->categories_selection_ptr] = ozone->selection;
|
||||
|
||||
/* Cursor animation */
|
||||
ozone->animations.cursor_alpha = 0.0f;
|
||||
|
||||
@ -4007,6 +4012,22 @@ static void ozone_update_content_metadata(ozone_handle_t *ozone)
|
||||
}
|
||||
}
|
||||
|
||||
static void ozone_navigation_pointer_changed(void *data);
|
||||
|
||||
static void ozone_tab_set_selection(void *data)
|
||||
{
|
||||
ozone_handle_t *ozone = (ozone_handle_t*)data;
|
||||
|
||||
if (ozone)
|
||||
{
|
||||
size_t tab_selection = ozone->tab_selection[ozone->categories_selection_ptr];
|
||||
if (tab_selection)
|
||||
{
|
||||
menu_navigation_set_selection(tab_selection);
|
||||
ozone_navigation_pointer_changed(ozone);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ozone_leave_sidebar(ozone_handle_t *ozone,
|
||||
bool ozone_collapse_sidebar,
|
||||
@ -4020,6 +4041,9 @@ static void ozone_leave_sidebar(ozone_handle_t *ozone,
|
||||
ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar;
|
||||
ozone->cursor_in_sidebar = false;
|
||||
|
||||
/* Restore last selection per tab */
|
||||
ozone_tab_set_selection(ozone);
|
||||
|
||||
/* Cursor animation */
|
||||
ozone->animations.cursor_alpha = 0.0f;
|
||||
|
||||
@ -7941,6 +7965,9 @@ static void *ozone_init(void **userdata, bool video_is_threaded)
|
||||
ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_CONTENTLESS_CORES;
|
||||
#endif
|
||||
|
||||
for (i = 0; i < OZONE_TAB_MAX_LENGTH; i++)
|
||||
ozone->tab_selection[i] = 0;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL);
|
||||
|
||||
gfx_display_set_width(width);
|
||||
|
Loading…
x
Reference in New Issue
Block a user