Reafctor input_bind_dialog code

This commit is contained in:
twinaphex 2016-09-15 20:45:00 +02:00
parent 4c702c2d36
commit a9b8114109
5 changed files with 9 additions and 14 deletions

View File

@ -137,7 +137,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action)
bind.s = menu->menu_state.msg;
bind.len = sizeof(menu->menu_state.msg);
if (menu_input_ctl(MENU_INPUT_CTL_BIND_ITERATE, &bind))
if (menu_input_key_bind_iterate(&bind))
{
menu_entries_pop_stack(&selection, 0, 0);
menu_navigation_ctl(

View File

@ -202,13 +202,6 @@ bool menu_input_ctl(enum menu_input_ctl_state state, void *data)
case MENU_INPUT_CTL_BIND_SINGLE:
case MENU_INPUT_CTL_BIND_ALL:
return menu_input_key_bind_set_mode(state, data);
case MENU_INPUT_CTL_BIND_ITERATE:
{
menu_input_ctx_bind_t *bind = (menu_input_ctx_bind_t*)data;
if (!bind)
return false;
return menu_input_key_bind_iterate(bind->s, bind->len);
}
default:
case MENU_INPUT_CTL_NONE:
break;

View File

@ -79,8 +79,7 @@ enum menu_input_ctl_state
MENU_INPUT_CTL_DEINIT,
MENU_INPUT_CTL_BIND_NONE,
MENU_INPUT_CTL_BIND_SINGLE,
MENU_INPUT_CTL_BIND_ALL,
MENU_INPUT_CTL_BIND_ITERATE
MENU_INPUT_CTL_BIND_ALL
};
typedef struct menu_input_ctx_hitbox

View File

@ -383,7 +383,7 @@ bool menu_input_key_bind_set_min_max(menu_input_ctx_bind_limits_t *lim)
return true;
}
bool menu_input_key_bind_iterate(char *s, size_t len)
bool menu_input_key_bind_iterate(menu_input_ctx_bind_t *bind)
{
struct menu_bind_state binds;
bool timed_out = false;
@ -392,6 +392,9 @@ bool menu_input_key_bind_iterate(char *s, size_t len)
int timeout =
(menu_input_binds.timeout_end - current) / 1000000;
if (!bind)
return false;
if (timeout <= 0)
{
input_driver_keyboard_mapping_set_block(false);
@ -403,10 +406,10 @@ bool menu_input_key_bind_iterate(char *s, size_t len)
timed_out = true;
}
snprintf(s, len,
snprintf(bind->s, bind->len,
"[%s]\npress keyboard or joypad\n(timeout %d %s)",
input_config_bind_map_get_desc(
menu_input_binds.begin - MENU_SETTINGS_BIND_BEGIN),
menu_input_binds.begin - MENU_SETTINGS_BIND_BEGIN),
timeout,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SECONDS));

View File

@ -45,7 +45,7 @@ bool menu_input_key_bind_set_mode(
bool menu_input_key_bind_set_min_max(menu_input_ctx_bind_limits_t *lim);
bool menu_input_key_bind_iterate(char *s, size_t len);
bool menu_input_key_bind_iterate(menu_input_ctx_bind_t *bind);
RETRO_END_DECLS