(Menu) menu_settings_iterate - implement fast scrolling

This commit is contained in:
twinaphex 2014-08-17 04:57:02 +02:00
parent 02e6ab0ba9
commit 55c48e7e66

View File

@ -1206,17 +1206,20 @@ static int menu_settings_iterate(unsigned action, rarch_setting_t *setting)
if (driver.menu->need_refresh) if (driver.menu->need_refresh)
action = MENU_ACTION_NOOP; action = MENU_ACTION_NOOP;
unsigned scroll_speed = (max(driver.menu->scroll_accel, 2) - 2) / 4 + 1;
unsigned fast_scroll_speed = 4 + 4 * scroll_speed;
switch (action) switch (action)
{ {
case MENU_ACTION_UP: case MENU_ACTION_UP:
if (driver.menu->selection_ptr > 0) if (driver.menu->selection_ptr >= scroll_speed)
menu_decrement_navigation(driver.menu); menu_decrement_navigation(driver.menu);
else else
menu_set_navigation(driver.menu, file_list_get_size(driver.menu->selection_buf) - 1); menu_set_navigation(driver.menu, file_list_get_size(driver.menu->selection_buf) - 1);
break; break;
case MENU_ACTION_DOWN: case MENU_ACTION_DOWN:
if (driver.menu->selection_ptr + 1 < file_list_get_size(driver.menu->selection_buf)) if (driver.menu->selection_ptr + scroll_speed < file_list_get_size(driver.menu->selection_buf))
menu_increment_navigation(driver.menu); menu_increment_navigation(driver.menu);
else else
menu_clear_navigation(driver.menu); menu_clear_navigation(driver.menu);