This commit is contained in:
twinaphex 2017-05-17 07:51:37 +02:00
parent dd53162519
commit fe4622fd3b

View File

@ -1023,57 +1023,50 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
break; break;
case MENU_NAVIGATION_CTL_ASCEND_ALPHABET: case MENU_NAVIGATION_CTL_ASCEND_ALPHABET:
{ {
size_t ptr;
size_t i = 0; size_t i = 0;
size_t *ptr_out = (size_t*)&menu_driver_selection_ptr;
size_t menu_list_size = menu_entries_get_size(); size_t menu_list_size = menu_entries_get_size();
if (!scroll_index_size || !ptr_out) if (!scroll_index_size)
return false; return false;
ptr = *ptr_out; if (menu_driver_selection_ptr == scroll_index_list[scroll_index_size - 1])
menu_driver_selection_ptr = menu_list_size - 1;
if (ptr == scroll_index_list[scroll_index_size - 1])
*ptr_out = menu_list_size - 1;
else else
{ {
while (i < scroll_index_size - 1 while (i < scroll_index_size - 1
&& scroll_index_list[i + 1] <= ptr) && scroll_index_list[i + 1] <= menu_driver_selection_ptr)
i++; i++;
*ptr_out = scroll_index_list[i + 1]; menu_driver_selection_ptr = scroll_index_list[i + 1];
if (*ptr_out >= menu_list_size) if (menu_driver_selection_ptr >= menu_list_size)
*ptr_out = menu_list_size - 1; menu_driver_selection_ptr = menu_list_size - 1;
} }
if (menu_driver_ctx->navigation_ascend_alphabet) if (menu_driver_ctx->navigation_ascend_alphabet)
menu_driver_ctx->navigation_ascend_alphabet( menu_driver_ctx->navigation_ascend_alphabet(
menu_userdata, ptr_out); menu_userdata, &menu_driver_selection_ptr);
} }
break; break;
case MENU_NAVIGATION_CTL_DESCEND_ALPHABET: case MENU_NAVIGATION_CTL_DESCEND_ALPHABET:
{ {
size_t ptr;
size_t i = 0; size_t i = 0;
size_t *ptr_out = (size_t*)&menu_driver_selection_ptr;
if (!scroll_index_size || !ptr_out) if (!scroll_index_size)
return false; return false;
ptr = *ptr_out; if (menu_driver_selection_ptr == 0)
if (ptr == 0)
return false; return false;
i = scroll_index_size - 1; i = scroll_index_size - 1;
while (i && scroll_index_list[i - 1] >= ptr) while (i && scroll_index_list[i - 1] >= menu_driver_selection_ptr)
i--; i--;
*ptr_out = scroll_index_list[i - 1];
menu_driver_selection_ptr = scroll_index_list[i - 1];
if (menu_driver_ctx->navigation_descend_alphabet) if (menu_driver_ctx->navigation_descend_alphabet)
menu_driver_ctx->navigation_descend_alphabet( menu_driver_ctx->navigation_descend_alphabet(
menu_userdata, ptr_out); menu_userdata, &menu_driver_selection_ptr);
} }
break; break;
case MENU_NAVIGATION_CTL_CLEAR_SCROLL_INDICES: case MENU_NAVIGATION_CTL_CLEAR_SCROLL_INDICES: