(menu_input.c) Refactor more code - get rid of menu_navigation_get_ptr usage

This commit is contained in:
twinaphex 2015-09-25 16:12:11 +02:00
parent a7b83cfd45
commit 31f28bf6f4
1 changed files with 40 additions and 27 deletions

View File

@ -272,9 +272,8 @@ static void menu_input_search_callback(void *userdata, const char *str)
{ {
size_t idx = 0; size_t idx = 0;
menu_list_t *menu_list = menu_list_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr();
menu_navigation_t *nav = menu_navigation_get_ptr();
if (!menu_list || !nav) if (!menu_list)
return; return;
if (str && *str && file_list_search(menu_list->selection_buf, str, &idx)) if (str && *str && file_list_search(menu_list->selection_buf, str, &idx))
@ -567,16 +566,18 @@ static bool menu_input_custom_bind_keyboard_cb(void *data, unsigned code)
static int menu_input_set_bind_mode_common(rarch_setting_t *setting, static int menu_input_set_bind_mode_common(rarch_setting_t *setting,
enum menu_input_bind_mode type) enum menu_input_bind_mode type)
{ {
size_t selection;
menu_displaylist_info_t info = {0}; menu_displaylist_info_t info = {0};
struct retro_keybind *keybind = NULL; struct retro_keybind *keybind = NULL;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
menu_list_t *menu_list = menu_list_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr();
menu_input_t *menu_input = menu_input_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr();
menu_navigation_t *nav = menu_navigation_get_ptr();
if (!setting) if (!setting)
return -1; return -1;
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection);
switch (type) switch (type)
{ {
case MENU_INPUT_BIND_NONE: case MENU_INPUT_BIND_NONE:
@ -594,7 +595,7 @@ static int menu_input_set_bind_mode_common(rarch_setting_t *setting,
info.list = menu_list->menu_stack; info.list = menu_list->menu_stack;
info.type = MENU_SETTINGS_CUSTOM_BIND_KEYBOARD; info.type = MENU_SETTINGS_CUSTOM_BIND_KEYBOARD;
info.directory_ptr = nav->selection_ptr; info.directory_ptr = selection;
strlcpy(info.label, strlcpy(info.label,
menu_hash_to_str(MENU_LABEL_CUSTOM_BIND), sizeof(info.label)); menu_hash_to_str(MENU_LABEL_CUSTOM_BIND), sizeof(info.label));
@ -608,7 +609,7 @@ static int menu_input_set_bind_mode_common(rarch_setting_t *setting,
info.list = menu_list->menu_stack; info.list = menu_list->menu_stack;
info.type = MENU_SETTINGS_CUSTOM_BIND_KEYBOARD; info.type = MENU_SETTINGS_CUSTOM_BIND_KEYBOARD;
info.directory_ptr = nav->selection_ptr; info.directory_ptr = selection;
strlcpy(info.label, strlcpy(info.label,
menu_hash_to_str(MENU_LABEL_CUSTOM_BIND_ALL), menu_hash_to_str(MENU_LABEL_CUSTOM_BIND_ALL),
sizeof(info.label)); sizeof(info.label));
@ -889,14 +890,16 @@ static int menu_input_mouse_frame(
menu_file_list_cbs_t *cbs, menu_entry_t *entry, menu_file_list_cbs_t *cbs, menu_entry_t *entry,
uint64_t input_mouse) uint64_t input_mouse)
{ {
size_t selection;
menu_input_t *menu_input = menu_input_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr();
menu_list_t *menu_list = menu_list_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr();
menu_navigation_t *nav = menu_navigation_get_ptr();
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection);
if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L)) if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L))
{ {
if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L_TOGGLE)) if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L_TOGGLE))
return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_SELECT); return menu_entry_action(entry, selection, MENU_ACTION_SELECT);
if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L_SET_NAVIGATION)) if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L_SET_NAVIGATION))
{ {
@ -908,7 +911,10 @@ static int menu_input_mouse_frame(
} }
if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_R)) if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_R))
menu_list_pop_stack(menu_list, &nav->selection_ptr); {
menu_list_pop_stack(menu_list, &selection);
menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, &selection);
}
if (BIT64_GET(input_mouse, MOUSE_ACTION_WHEEL_DOWN)) if (BIT64_GET(input_mouse, MOUSE_ACTION_WHEEL_DOWN))
{ {
@ -928,6 +934,7 @@ static int menu_input_mouse_frame(
static int menu_input_mouse_post_iterate(uint64_t *input_mouse, static int menu_input_mouse_post_iterate(uint64_t *input_mouse,
menu_file_list_cbs_t *cbs, unsigned action) menu_file_list_cbs_t *cbs, unsigned action)
{ {
size_t selection;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
menu_display_t *disp = menu_display_get_ptr(); menu_display_t *disp = menu_display_get_ptr();
menu_input_t *menu_input = menu_input_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr();
@ -936,6 +943,8 @@ static int menu_input_mouse_post_iterate(uint64_t *input_mouse,
*input_mouse = MOUSE_ACTION_NONE; *input_mouse = MOUSE_ACTION_NONE;
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection);
if (!settings->menu.mouse.enable if (!settings->menu.mouse.enable
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
|| (settings->input.overlay_enable && input_overlay_is_alive()) || (settings->input.overlay_enable && input_overlay_is_alive())
@ -959,13 +968,11 @@ static int menu_input_mouse_post_iterate(uint64_t *input_mouse,
if ((unsigned)menu_input->mouse.y < disp->header_height) if ((unsigned)menu_input->mouse.y < disp->header_height)
{ {
menu_list_pop_stack(menu_list, &nav->selection_ptr); menu_list_pop_stack(menu_list, &selection);
menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, &selection);
return 0; return 0;
} }
if ( if ((menu_input->mouse.ptr == selection) && cbs && cbs->action_select)
(menu_input->mouse.ptr == nav->selection_ptr) &&
cbs &&
cbs->action_select )
{ {
BIT64_SET(*input_mouse, MOUSE_ACTION_BUTTON_L_TOGGLE); BIT64_SET(*input_mouse, MOUSE_ACTION_BUTTON_L_TOGGLE);
} }
@ -1005,19 +1012,19 @@ static int menu_input_mouse_post_iterate(uint64_t *input_mouse,
static int pointer_tap(menu_file_list_cbs_t *cbs, static int pointer_tap(menu_file_list_cbs_t *cbs,
menu_entry_t *entry, unsigned action) menu_entry_t *entry, unsigned action)
{ {
menu_input_t *menu_input = menu_input_get_ptr(); size_t selection, idx;
menu_navigation_t *nav = menu_navigation_get_ptr();
if (menu_input->pointer.ptr == nav->selection_ptr
&& cbs && cbs->action_select)
return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_SELECT);
else
{
size_t idx = menu_input->pointer.ptr;
bool scroll = false; bool scroll = false;
menu_input_t *menu_input = menu_input_get_ptr();
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection);
if (menu_input->pointer.ptr == selection && cbs && cbs->action_select)
return menu_entry_action(entry, selection, MENU_ACTION_SELECT);
idx = menu_input->pointer.ptr;
menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, &idx); menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, &idx);
menu_navigation_ctl(MENU_NAVIGATION_CTL_SET, &scroll); menu_navigation_ctl(MENU_NAVIGATION_CTL_SET, &scroll);
}
return 0; return 0;
} }
@ -1065,15 +1072,17 @@ int16_t menu_input_mouse_state(enum menu_input_mouse_state state)
static int menu_input_pointer_post_iterate(menu_file_list_cbs_t *cbs, static int menu_input_pointer_post_iterate(menu_file_list_cbs_t *cbs,
menu_entry_t *entry, unsigned action) menu_entry_t *entry, unsigned action)
{ {
size_t selection;
int ret = 0; int ret = 0;
menu_display_t *disp = menu_display_get_ptr(); menu_display_t *disp = menu_display_get_ptr();
menu_navigation_t *nav = menu_navigation_get_ptr();
menu_list_t *menu_list = menu_list_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr();
menu_input_t *menu_input = menu_input_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
if (!menu_input) if (!menu_input)
return -1; return -1;
if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection))
return -1;
if (!settings->menu.pointer.enable if (!settings->menu.pointer.enable
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
@ -1121,7 +1130,10 @@ static int menu_input_pointer_post_iterate(menu_file_list_cbs_t *cbs,
if (!menu_input->pointer.dragging) if (!menu_input->pointer.dragging)
{ {
if ((unsigned)menu_input->pointer.start_y < disp->header_height) if ((unsigned)menu_input->pointer.start_y < disp->header_height)
menu_list_pop_stack(menu_list, &nav->selection_ptr); {
menu_list_pop_stack(menu_list, &selection);
menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, &selection);
}
else if (menu_input->pointer.ptr <= menu_list_get_size(menu_list)-1) else if (menu_input->pointer.ptr <= menu_list_get_size(menu_list)-1)
{ {
menu_input->pointer.oldpressed[0] = false; menu_input->pointer.oldpressed[0] = false;
@ -1145,7 +1157,8 @@ static int menu_input_pointer_post_iterate(menu_file_list_cbs_t *cbs,
if (!menu_input->pointer.oldback) if (!menu_input->pointer.oldback)
{ {
menu_input->pointer.oldback = true; menu_input->pointer.oldback = true;
menu_list_pop_stack(menu_list, &nav->selection_ptr); menu_list_pop_stack(menu_list, &selection);
menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, &selection);
} }
} }
menu_input->pointer.oldback = menu_input->pointer.back; menu_input->pointer.oldback = menu_input->pointer.back;