mirror of
https://github.com/CTCaer/RetroArch.git
synced 2025-02-04 10:36:50 +00:00
(Menu) Put scroll indices into struct
This commit is contained in:
parent
b1c775849a
commit
eb7a68a182
@ -99,9 +99,15 @@ typedef struct
|
||||
|
||||
/* Quick jumping indices with L/R.
|
||||
* Rebuilt when parsing directory. */
|
||||
size_t scroll_indices[2 * (26 + 2) + 1];
|
||||
unsigned scroll_indices_size;
|
||||
unsigned scroll_accel;
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
size_t list[2 * (26 + 2) + 1];
|
||||
unsigned size;
|
||||
} indices;
|
||||
unsigned acceleration;
|
||||
} scroll;
|
||||
|
||||
char default_glslp[PATH_MAX_LENGTH];
|
||||
char default_cgp[PATH_MAX_LENGTH];
|
||||
|
@ -2030,7 +2030,7 @@ static int action_toggle_scroll(unsigned type, const char *label,
|
||||
if (!driver.menu)
|
||||
return -1;
|
||||
|
||||
scroll_speed = (max(driver.menu->scroll_accel, 2) - 2) / 4 + 1;
|
||||
scroll_speed = (max(driver.menu->scroll.acceleration, 2) - 2) / 4 + 1;
|
||||
fast_scroll_speed = 4 + 4 * scroll_speed;
|
||||
|
||||
switch (action)
|
||||
@ -3593,7 +3593,7 @@ static int deferred_push_default(void *data, void *userdata,
|
||||
static int action_bind_up_or_down_generic(unsigned type, const char *label,
|
||||
unsigned action)
|
||||
{
|
||||
unsigned scroll_speed = (max(driver.menu->scroll_accel, 2) - 2) / 4 + 1;
|
||||
unsigned scroll_speed = (max(driver.menu->scroll.acceleration, 2) - 2) / 4 + 1;
|
||||
|
||||
if (menu_list_get_size(driver.menu->menu_list) <= 0)
|
||||
return 0;
|
||||
|
@ -478,7 +478,8 @@ unsigned menu_input_frame(retro_input_t input, retro_input_t trigger_input)
|
||||
{
|
||||
first_held = false;
|
||||
trigger_input |= input & input_repeat;
|
||||
driver.menu->scroll_accel = min(driver.menu->scroll_accel + 1, 64);
|
||||
driver.menu->scroll.acceleration =
|
||||
min(driver.menu->scroll.acceleration + 1, 64);
|
||||
}
|
||||
|
||||
initial_held = false;
|
||||
@ -487,7 +488,7 @@ unsigned menu_input_frame(retro_input_t input, retro_input_t trigger_input)
|
||||
{
|
||||
first_held = false;
|
||||
initial_held = true;
|
||||
driver.menu->scroll_accel = 0;
|
||||
driver.menu->scroll.acceleration = 0;
|
||||
}
|
||||
|
||||
driver.menu->mouse.enable = g_settings.menu.mouse_enable;
|
||||
|
@ -98,11 +98,11 @@ static void menu_entries_build_scroll_indices(file_list_t *list)
|
||||
if (!driver.menu || !list)
|
||||
return;
|
||||
|
||||
driver.menu->scroll_indices_size = 0;
|
||||
driver.menu->scroll.indices.size = 0;
|
||||
if (!list->size)
|
||||
return;
|
||||
|
||||
driver.menu->scroll_indices[driver.menu->scroll_indices_size++] = 0;
|
||||
driver.menu->scroll.indices.list[driver.menu->scroll.indices.size++] = 0;
|
||||
|
||||
current = menu_entries_list_get_first_char(list, 0);
|
||||
current_is_dir = menu_entries_list_elem_is_dir(list, 0);
|
||||
@ -113,13 +113,13 @@ static void menu_entries_build_scroll_indices(file_list_t *list)
|
||||
bool is_dir = menu_entries_list_elem_is_dir(list, i);
|
||||
|
||||
if ((current_is_dir && !is_dir) || (first > current))
|
||||
driver.menu->scroll_indices[driver.menu->scroll_indices_size++] = i;
|
||||
driver.menu->scroll.indices.list[driver.menu->scroll.indices.size++] = i;
|
||||
|
||||
current = first;
|
||||
current_is_dir = is_dir;
|
||||
}
|
||||
|
||||
driver.menu->scroll_indices[driver.menu->scroll_indices_size++] =
|
||||
driver.menu->scroll.indices.list[driver.menu->scroll.indices.size++] =
|
||||
list->size - 1;
|
||||
}
|
||||
|
||||
@ -422,7 +422,7 @@ int menu_list_populate_generic(void *data,
|
||||
if (!menu)
|
||||
return -1;
|
||||
|
||||
driver.menu->scroll_indices_size = 0;
|
||||
driver.menu->scroll.indices.size = 0;
|
||||
menu_entries_build_scroll_indices(list);
|
||||
menu_entries_refresh(menu, list);
|
||||
|
||||
|
@ -111,17 +111,17 @@ void menu_navigation_descend_alphabet(menu_handle_t *menu, size_t *ptr_out)
|
||||
size_t i = 0;
|
||||
size_t ptr = *ptr_out;
|
||||
|
||||
if (!menu->scroll_indices_size)
|
||||
if (!menu->scroll.indices.size)
|
||||
return;
|
||||
|
||||
if (ptr == 0)
|
||||
return;
|
||||
|
||||
i = menu->scroll_indices_size - 1;
|
||||
i = menu->scroll.indices.size - 1;
|
||||
|
||||
while (i && menu->scroll_indices[i - 1] >= ptr)
|
||||
while (i && menu->scroll.indices.list[i - 1] >= ptr)
|
||||
i--;
|
||||
*ptr_out = menu->scroll_indices[i - 1];
|
||||
*ptr_out = menu->scroll.indices.list[i - 1];
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_descend_alphabet)
|
||||
driver.menu_ctx->navigation_descend_alphabet(menu, ptr_out);
|
||||
@ -143,16 +143,16 @@ void menu_navigation_ascend_alphabet(menu_handle_t *menu, size_t *ptr_out)
|
||||
size_t i = 0;
|
||||
size_t ptr = *ptr_out;
|
||||
|
||||
if (!menu->scroll_indices_size)
|
||||
if (!menu->scroll.indices.size)
|
||||
return;
|
||||
|
||||
if (ptr == menu->scroll_indices[menu->scroll_indices_size - 1])
|
||||
if (ptr == menu->scroll.indices.list[menu->scroll.indices.size - 1])
|
||||
return;
|
||||
|
||||
while (i < menu->scroll_indices_size - 1
|
||||
&& menu->scroll_indices[i + 1] <= ptr)
|
||||
while (i < menu->scroll.indices.size - 1
|
||||
&& menu->scroll.indices.list[i + 1] <= ptr)
|
||||
i++;
|
||||
*ptr_out = menu->scroll_indices[i + 1];
|
||||
*ptr_out = menu->scroll.indices.list[i + 1];
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->navigation_descend_alphabet)
|
||||
driver.menu_ctx->navigation_descend_alphabet(menu, ptr_out);
|
||||
|
Loading…
x
Reference in New Issue
Block a user