mirror of
https://github.com/libretro/RetroArch
synced 2025-02-21 09:39:56 +00:00
Refactor menu_navigation_decrement
This commit is contained in:
parent
a57595ad94
commit
f0b76fa5b0
@ -30,7 +30,7 @@ static int action_bind_up_generic(unsigned type, const char *label)
|
|||||||
if (menu_list_get_size(menu_list) <= 0)
|
if (menu_list_get_size(menu_list) <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
menu_navigation_decrement(nav, scroll_speed);
|
menu_navigation_ctl(MENU_NAVIGATION_CTL_DECREMENT, &scroll_speed);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -905,7 +905,10 @@ static int menu_input_mouse_frame(
|
|||||||
menu_navigation_increment(nav, 1);
|
menu_navigation_increment(nav, 1);
|
||||||
|
|
||||||
if (BIT64_GET(input_mouse, MOUSE_ACTION_WHEEL_UP))
|
if (BIT64_GET(input_mouse, MOUSE_ACTION_WHEEL_UP))
|
||||||
menu_navigation_decrement(nav, 1);
|
{
|
||||||
|
unsigned decrement_by = 1;
|
||||||
|
menu_navigation_ctl(MENU_NAVIGATION_CTL_DECREMENT, &decrement_by);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -28,12 +28,17 @@
|
|||||||
bool menu_navigation_ctl(enum menu_navigation_ctl_state state, void *data)
|
bool menu_navigation_ctl(enum menu_navigation_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr();
|
const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr();
|
||||||
|
menu_navigation_t *nav = menu_navigation_get_ptr();
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case MENU_NAVIGATION_CTL_CLEAR:
|
case MENU_NAVIGATION_CTL_CLEAR:
|
||||||
{
|
{
|
||||||
bool *pending_push = (bool*)data;
|
bool *pending_push = (bool*)data;
|
||||||
|
|
||||||
|
if (!pending_push)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (driver->navigation_clear)
|
if (driver->navigation_clear)
|
||||||
driver->navigation_clear(*pending_push);
|
driver->navigation_clear(*pending_push);
|
||||||
}
|
}
|
||||||
@ -43,13 +48,38 @@ bool menu_navigation_ctl(enum menu_navigation_ctl_state state, void *data)
|
|||||||
driver->navigation_increment();
|
driver->navigation_increment();
|
||||||
return true;
|
return true;
|
||||||
case MENU_NAVIGATION_CTL_DECREMENT:
|
case MENU_NAVIGATION_CTL_DECREMENT:
|
||||||
if (driver->navigation_decrement)
|
{
|
||||||
driver->navigation_decrement();
|
menu_list_t *menu_list = menu_list_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
size_t selection = nav->selection_ptr;
|
||||||
|
unsigned *scroll_speed = (unsigned*)data;
|
||||||
|
|
||||||
|
if (!scroll_speed)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (selection >= *scroll_speed)
|
||||||
|
menu_navigation_set(nav, selection - *scroll_speed, true);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (settings->menu.navigation.wraparound.vertical_enable)
|
||||||
|
menu_navigation_set(nav,
|
||||||
|
menu_list_get_size(menu_list) - 1, true);
|
||||||
|
else
|
||||||
|
menu_navigation_set(nav, 0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_navigation_ctl(MENU_NAVIGATION_CTL_DECREMENT, NULL);
|
||||||
|
if (driver->navigation_decrement)
|
||||||
|
driver->navigation_decrement();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
case MENU_NAVIGATION_CTL_SET:
|
case MENU_NAVIGATION_CTL_SET:
|
||||||
{
|
{
|
||||||
bool *scroll = (bool*)data;
|
bool *scroll = (bool*)data;
|
||||||
|
|
||||||
|
if (!scroll)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (driver->navigation_set)
|
if (driver->navigation_set)
|
||||||
driver->navigation_set(*scroll);
|
driver->navigation_set(*scroll);
|
||||||
}
|
}
|
||||||
@ -62,6 +92,9 @@ bool menu_navigation_ctl(enum menu_navigation_ctl_state state, void *data)
|
|||||||
{
|
{
|
||||||
size_t *ptr_out = (size_t*)data;
|
size_t *ptr_out = (size_t*)data;
|
||||||
|
|
||||||
|
if (!ptr_out)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (driver->navigation_ascend_alphabet)
|
if (driver->navigation_ascend_alphabet)
|
||||||
driver->navigation_ascend_alphabet(ptr_out);
|
driver->navigation_ascend_alphabet(ptr_out);
|
||||||
}
|
}
|
||||||
@ -70,6 +103,9 @@ bool menu_navigation_ctl(enum menu_navigation_ctl_state state, void *data)
|
|||||||
{
|
{
|
||||||
size_t *ptr_out = (size_t*)data;
|
size_t *ptr_out = (size_t*)data;
|
||||||
|
|
||||||
|
if (!ptr_out)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (driver->navigation_descend_alphabet)
|
if (driver->navigation_descend_alphabet)
|
||||||
driver->navigation_descend_alphabet(ptr_out);
|
driver->navigation_descend_alphabet(ptr_out);
|
||||||
}
|
}
|
||||||
@ -94,34 +130,6 @@ void menu_navigation_clear(menu_navigation_t *nav, bool pending_push)
|
|||||||
menu_navigation_ctl(MENU_NAVIGATION_CTL_CLEAR, &pending_push);
|
menu_navigation_ctl(MENU_NAVIGATION_CTL_CLEAR, &pending_push);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* menu_navigation_decrement:
|
|
||||||
*
|
|
||||||
* Decrement the navigation pointer.
|
|
||||||
**/
|
|
||||||
void menu_navigation_decrement(menu_navigation_t *nav, unsigned scroll_speed)
|
|
||||||
{
|
|
||||||
menu_list_t *menu_list = menu_list_get_ptr();
|
|
||||||
settings_t *settings = config_get_ptr();
|
|
||||||
size_t selection = nav->selection_ptr;
|
|
||||||
|
|
||||||
if (!nav)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (selection >= scroll_speed)
|
|
||||||
menu_navigation_set(nav, selection - scroll_speed, true);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (settings->menu.navigation.wraparound.vertical_enable)
|
|
||||||
menu_navigation_set(nav,
|
|
||||||
menu_list_get_size(menu_list) - 1, true);
|
|
||||||
else
|
|
||||||
menu_navigation_set(nav, 0, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
menu_navigation_ctl(MENU_NAVIGATION_CTL_DECREMENT, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* menu_navigation_increment:
|
* menu_navigation_increment:
|
||||||
*
|
*
|
||||||
|
@ -63,13 +63,6 @@ enum menu_navigation_ctl_state
|
|||||||
**/
|
**/
|
||||||
void menu_navigation_clear(menu_navigation_t *nav, bool pending_push);
|
void menu_navigation_clear(menu_navigation_t *nav, bool pending_push);
|
||||||
|
|
||||||
/**
|
|
||||||
* menu_navigation_decrement:
|
|
||||||
*
|
|
||||||
* Decrement the navigation pointer.
|
|
||||||
**/
|
|
||||||
void menu_navigation_decrement(menu_navigation_t *nav, unsigned scroll_speed);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* menu_navigation_increment:
|
* menu_navigation_increment:
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user