mirror of
https://github.com/libretro/RetroArch
synced 2025-02-18 18:40:06 +00:00
Fix driver menu left wrap
Driver options in Settings/Driver should wrap left now.
This commit is contained in:
parent
56e63d4460
commit
28ef2d6487
31
driver.c
31
driver.c
@ -168,6 +168,30 @@ static bool driver_find_first(const char *label, char *s, size_t len)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* driver_find_last:
|
||||
* @label : string of driver type to be found.
|
||||
* @s : identifier of driver to be found.
|
||||
* @len : size of @s.
|
||||
*
|
||||
* Find last driver in driver array.
|
||||
**/
|
||||
static bool driver_find_last(const char *label, char *s, size_t len)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0;
|
||||
find_driver_nonempty(label, i, s, len) != NULL; i++)
|
||||
{}
|
||||
|
||||
if (i)
|
||||
find_driver_nonempty(label, i-1, s, len);
|
||||
else
|
||||
driver_find_first(label, s, len);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* driver_find_prev:
|
||||
* @label : string of driver type to be found.
|
||||
@ -475,6 +499,13 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
|
||||
return false;
|
||||
return driver_find_first(drv->label, drv->s, drv->len);
|
||||
}
|
||||
case RARCH_DRIVER_CTL_FIND_LAST:
|
||||
{
|
||||
driver_ctx_info_t *drv = (driver_ctx_info_t*)data;
|
||||
if (!drv)
|
||||
return false;
|
||||
return driver_find_last(drv->label, drv->s, drv->len);
|
||||
}
|
||||
case RARCH_DRIVER_CTL_FIND_PREV:
|
||||
{
|
||||
driver_ctx_info_t *drv = (driver_ctx_info_t*)data;
|
||||
|
2
driver.h
2
driver.h
@ -93,6 +93,8 @@ enum driver_ctl_state
|
||||
|
||||
RARCH_DRIVER_CTL_FIND_FIRST,
|
||||
|
||||
RARCH_DRIVER_CTL_FIND_LAST,
|
||||
|
||||
RARCH_DRIVER_CTL_FIND_PREV,
|
||||
|
||||
RARCH_DRIVER_CTL_FIND_NEXT,
|
||||
|
@ -368,7 +368,17 @@ static int setting_string_action_left_driver(void *data,
|
||||
drv.len = setting->size;
|
||||
|
||||
if (!driver_ctl(RARCH_DRIVER_CTL_FIND_PREV, &drv))
|
||||
return -1;
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (settings && settings->bools.menu_navigation_wraparound_enable)
|
||||
{
|
||||
drv.label = setting->name;
|
||||
drv.s = setting->value.target.string;
|
||||
drv.len = setting->size;
|
||||
driver_ctl(RARCH_DRIVER_CTL_FIND_LAST, &drv);
|
||||
}
|
||||
}
|
||||
|
||||
if (setting->change_handler)
|
||||
setting->change_handler(setting);
|
||||
|
Loading…
x
Reference in New Issue
Block a user