1
0
mirror of https://github.com/libretro/RetroArch synced 2024-07-08 12:15:49 +00:00

Fix driver menu left wrap

Driver options in Settings/Driver should wrap left now.
This commit is contained in:
Joseph Montgomery 2017-07-11 21:00:44 -04:00
parent 56e63d4460
commit 28ef2d6487
3 changed files with 44 additions and 1 deletions

View File

@ -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;

View File

@ -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,

View File

@ -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);