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