mirror of
https://github.com/libretro/RetroArch
synced 2025-04-15 14:42:27 +00:00
Clean up menu_navigation
This commit is contained in:
parent
982c8e87a3
commit
9bc6e99104
7
driver.h
7
driver.h
@ -494,6 +494,13 @@ typedef struct menu_ctx_driver
|
||||
void (*populate_entries)(void*, unsigned);
|
||||
void (*iterate)(void*, unsigned);
|
||||
int (*input_postprocess)(void *, uint64_t);
|
||||
void (*navigation_clear)(void *);
|
||||
void (*navigation_decrement)(void *);
|
||||
void (*navigation_increment)(void *);
|
||||
void (*navigation_set)(void *);
|
||||
void (*navigation_set_last)(void *);
|
||||
void (*navigation_descend_alphabet)(void *, size_t *);
|
||||
void (*navigation_ascend_alphabet)(void *, size_t *);
|
||||
|
||||
// Human readable string.
|
||||
const char *ident;
|
||||
|
@ -724,5 +724,13 @@ const menu_ctx_driver_t menu_ctx_lakka = {
|
||||
NULL,
|
||||
NULL,
|
||||
lakka_input_postprocess,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
"lakka",
|
||||
};
|
||||
|
@ -617,5 +617,12 @@ const menu_ctx_driver_t menu_ctx_rgui = {
|
||||
NULL,
|
||||
NULL,
|
||||
rgui_input_postprocess,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
"rgui",
|
||||
};
|
||||
|
@ -477,5 +477,13 @@ const menu_ctx_driver_t menu_ctx_rmenu = {
|
||||
NULL,
|
||||
NULL,
|
||||
rmenu_input_postprocess,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
"rmenu",
|
||||
};
|
||||
|
@ -652,6 +652,28 @@ static void rmenu_xui_populate_entries(void *data, unsigned i)
|
||||
XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr);
|
||||
}
|
||||
|
||||
static void rmenu_xui_navigation_clear(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr);
|
||||
}
|
||||
|
||||
static void rmenu_xui_navigation_set_visible(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr);
|
||||
}
|
||||
|
||||
static void rmenu_xui_navigation_alphabet(void *data, size_t *ptr_out)
|
||||
{
|
||||
XuiListSetCurSelVisible(m_menulist, *ptr_out);
|
||||
}
|
||||
|
||||
static void rmenu_xui_navigation_alphabet(void *data, size_t *ptr_out)
|
||||
{
|
||||
XuiListSetCurSelVisible(m_menulist, *ptr_out);
|
||||
}
|
||||
|
||||
const menu_ctx_driver_t menu_ctx_rmenu_xui = {
|
||||
NULL,
|
||||
rmenu_xui_render_messagebox,
|
||||
@ -664,5 +686,12 @@ const menu_ctx_driver_t menu_ctx_rmenu_xui = {
|
||||
rmenu_xui_populate_entries,
|
||||
NULL,
|
||||
rmenu_xui_input_postprocess,
|
||||
rmenu_xui_navigation_clear,
|
||||
rmenu_xui_navigation_set_visible,
|
||||
rmenu_xui_navigation_set_visible,
|
||||
rmenu_xui_navigation_set_visible,
|
||||
rmenu_xui_navigation_set_visible,
|
||||
rmenu_xui_navigation_alphabet,
|
||||
rmenu_xui_navigation_alphabet,
|
||||
"rmenu_xui",
|
||||
};
|
||||
|
@ -20,59 +20,52 @@
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
#include <xui.h>
|
||||
#endif
|
||||
#include "menu_common.h"
|
||||
#include "menu_navigation.h"
|
||||
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
extern HXUIOBJ m_menulist;
|
||||
#endif
|
||||
|
||||
void menu_clear_navigation(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
rgui->selection_ptr = 0;
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr);
|
||||
#endif
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_clear)
|
||||
driver.menu_ctx->navigation_clear(rgui);
|
||||
}
|
||||
|
||||
void menu_decrement_navigation(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
rgui->selection_ptr--;
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr);
|
||||
#endif
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_decrement)
|
||||
driver.menu_ctx->navigation_decrement(rgui);
|
||||
}
|
||||
|
||||
void menu_increment_navigation(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
rgui->selection_ptr++;
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr);
|
||||
#endif
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_increment)
|
||||
driver.menu_ctx->navigation_increment(rgui);
|
||||
}
|
||||
|
||||
void menu_set_navigation(void *data, size_t i)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
rgui->selection_ptr = i;
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr);
|
||||
#endif
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_set)
|
||||
driver.menu_ctx->navigation_set(rgui);
|
||||
}
|
||||
|
||||
void menu_set_navigation_last(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
rgui->selection_ptr = rgui->selection_buf->size - 1;
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr);
|
||||
#endif
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_set_last)
|
||||
driver.menu_ctx->navigation_set_last(rgui);
|
||||
}
|
||||
|
||||
void menu_descend_alphabet(void *data, size_t *ptr_out)
|
||||
@ -87,9 +80,9 @@ void menu_descend_alphabet(void *data, size_t *ptr_out)
|
||||
while (i && rgui->scroll_indices[i - 1] >= ptr)
|
||||
i--;
|
||||
*ptr_out = rgui->scroll_indices[i - 1];
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
XuiListSetCurSelVisible(m_menulist, *ptr_out);
|
||||
#endif
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_descend_alphabet)
|
||||
driver.menu_ctx->navigation_descend_alphabet(rgui, ptr_out);
|
||||
}
|
||||
|
||||
void menu_ascend_alphabet(void *data, size_t *ptr_out)
|
||||
@ -104,7 +97,7 @@ void menu_ascend_alphabet(void *data, size_t *ptr_out)
|
||||
while (i < rgui->scroll_indices_size - 1 && rgui->scroll_indices[i + 1] <= ptr)
|
||||
i++;
|
||||
*ptr_out = rgui->scroll_indices[i + 1];
|
||||
#ifdef HAVE_RMENU_XUI
|
||||
XuiListSetCurSelVisible(m_menulist, *ptr_out);
|
||||
#endif
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_descend_alphabet)
|
||||
driver.menu_ctx->navigation_descend_alphabet(rgui, ptr_out);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user