Start implementing action OK for ST_BIND

This commit is contained in:
twinaphex 2014-10-17 07:11:51 +02:00
parent 1a994ef1c3
commit c53632be81
4 changed files with 57 additions and 0 deletions

View File

@ -145,6 +145,7 @@ int menu_action_handle_setting(rarch_setting_t *setting,
case ST_FLOAT:
case ST_STRING:
case ST_DIR:
case ST_BIND:
return setting_handler(setting, action);
case ST_PATH:
return menu_entries_set_current_path_selection(setting,

View File

@ -1093,6 +1093,44 @@ rarch_setting_t setting_data_string_setting(enum setting_type type,
return result;
}
static int setting_data_bind_action_ok(void *data, unsigned action)
{
struct retro_keybind *bind = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data;
if (!setting)
return -1;
if (!driver.menu)
return -1;
bind = (struct retro_keybind*)&setting->value.keybind;
driver.menu->binds.begin = setting->bind_type;
driver.menu->binds.last = setting->bind_type;
driver.menu->binds.target = bind;
driver.menu->binds.player = setting->index;
file_list_push(driver.menu->menu_stack, "", "",
driver.menu->bind_mode_keyboard ?
MENU_SETTINGS_CUSTOM_BIND_KEYBOARD : MENU_SETTINGS_CUSTOM_BIND,
driver.menu->selection_ptr);
if (driver.menu->bind_mode_keyboard)
{
driver.menu->binds.timeout_end = rarch_get_time_usec() +
MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000;
input_keyboard_wait_keys(driver.menu,
menu_custom_bind_keyboard_cb);
}
else
{
menu_poll_bind_get_rested_axes(&driver.menu->binds);
menu_poll_bind_state(&driver.menu->binds);
}
return 0;
}
rarch_setting_t setting_data_bind_setting(const char* name,
const char* short_description, struct retro_keybind* target,
uint32_t index, const struct retro_keybind* default_value,
@ -1105,6 +1143,8 @@ rarch_setting_t setting_data_bind_setting(const char* name,
result.default_value.keybind = default_value;
result.index = index;
result.action_ok = setting_data_bind_action_ok;
return result;
}
@ -4292,6 +4332,7 @@ static bool setting_data_append_list_input_options(
CONFIG_BIND(g_settings.input.binds[0][i], 0,
bind->base, bind->desc, &retro_keybinds_1[i],
group_info.name, subgroup_info.name);
settings_list_current_add_bind_type(list, list_info, i + MENU_SETTINGS_BIND_BEGIN);
}
END_SUB_GROUP(list, list_info);

View File

@ -61,6 +61,15 @@ static void null_write_handler(void *data)
(void)data;
}
void settings_list_current_add_bind_type(
rarch_setting_t **list,
rarch_setting_info_t *list_info,
unsigned type)
{
unsigned index = list_info->index - 1;
(*list)[index].bind_type = type;
}
void settings_list_current_add_flags(
rarch_setting_t **list,
rarch_setting_info_t *list_info,

View File

@ -168,6 +168,7 @@ typedef struct rarch_setting
const char *on_label;
} boolean;
unsigned bind_type;
float step;
const char *rounding_fraction;
bool enforce_minrange;
@ -183,6 +184,11 @@ void settings_list_current_add_flags(
rarch_setting_info_t *list_info,
unsigned values);
void settings_list_current_add_bind_type(
rarch_setting_t **list,
rarch_setting_info_t *list_info,
unsigned type);
void settings_list_current_add_range(
rarch_setting_t **list,
rarch_setting_info_t *list_info,