mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
(RMenu/RGUI) Fast L/R scrolling
This commit is contained in:
parent
1c5a11c900
commit
0039ade630
@ -265,9 +265,9 @@ void filebrowser_update(void *data, uint64_t input, const char *extensions)
|
||||
action = FILEBROWSER_ACTION_RIGHT;
|
||||
else if (input & (1ULL << DEVICE_NAV_LEFT))
|
||||
action = FILEBROWSER_ACTION_LEFT;
|
||||
else if (input & (1ULL << DEVICE_NAV_R2))
|
||||
else if (input & (1ULL << DEVICE_NAV_R1))
|
||||
action = FILEBROWSER_ACTION_SCROLL_DOWN;
|
||||
else if (input & (1ULL << DEVICE_NAV_L2))
|
||||
else if (input & (1ULL << DEVICE_NAV_L1))
|
||||
action = FILEBROWSER_ACTION_SCROLL_UP;
|
||||
else if (input & (1ULL << DEVICE_NAV_A))
|
||||
{
|
||||
@ -717,6 +717,8 @@ static uint64_t rgui_input(void)
|
||||
RETRO_DEVICE_ID_JOYPAD_RIGHT, DEVICE_NAV_RIGHT,
|
||||
RETRO_DEVICE_ID_JOYPAD_A, DEVICE_NAV_A,
|
||||
RETRO_DEVICE_ID_JOYPAD_B, DEVICE_NAV_B,
|
||||
RETRO_DEVICE_ID_JOYPAD_L, DEVICE_NAV_L,
|
||||
RETRO_DEVICE_ID_JOYPAD_R, DEVICE_NAV_R,
|
||||
RETRO_DEVICE_ID_JOYPAD_START, DEVICE_NAV_START,
|
||||
RETRO_DEVICE_ID_JOYPAD_SELECT, DEVICE_NAV_SELECT,
|
||||
};
|
||||
@ -737,31 +739,24 @@ static uint64_t rgui_input(void)
|
||||
|
||||
rgui->trigger_state = input_state & ~rgui->old_input_state;
|
||||
|
||||
#if defined(HAVE_RGUI)
|
||||
rgui->do_held = (input_state & (
|
||||
(1ULL << DEVICE_NAV_UP) |
|
||||
(1ULL << DEVICE_NAV_DOWN) |
|
||||
(1ULL << DEVICE_NAV_LEFT) |
|
||||
(1ULL << DEVICE_NAV_RIGHT))) &&
|
||||
!(input_state & (1ULL << DEVICE_NAV_MENU));
|
||||
#elif defined(HAVE_RMENU)
|
||||
rgui->do_held = (input_state & (
|
||||
(1ULL << DEVICE_NAV_LEFT) |
|
||||
(1ULL << DEVICE_NAV_RIGHT) |
|
||||
(1ULL << DEVICE_NAV_UP) |
|
||||
(1ULL << DEVICE_NAV_DOWN) |
|
||||
(1ULL << RARCH_ANALOG_LEFT_Y_DPAD_UP) |
|
||||
(1ULL << RARCH_ANALOG_LEFT_Y_DPAD_DOWN) |
|
||||
(1ULL << RARCH_ANALOG_LEFT_X_DPAD_LEFT) |
|
||||
(1ULL << RARCH_ANALOG_LEFT_X_DPAD_RIGHT) |
|
||||
(1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_UP) |
|
||||
(1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_DOWN) |
|
||||
(1ULL << RARCH_ANALOG_RIGHT_X_DPAD_LEFT) |
|
||||
(1ULL << RARCH_ANALOG_RIGHT_X_DPAD_RIGHT) |
|
||||
(1ULL << DEVICE_NAV_L2) |
|
||||
(1ULL << DEVICE_NAV_R2)
|
||||
)) && !(input_state & (1ULL << DEVICE_NAV_MENU));
|
||||
(1ULL << DEVICE_NAV_LEFT)
|
||||
| (1ULL << DEVICE_NAV_RIGHT)
|
||||
| (1ULL << DEVICE_NAV_UP)
|
||||
| (1ULL << DEVICE_NAV_DOWN)
|
||||
| (1ULL << DEVICE_NAV_L1)
|
||||
| (1ULL << DEVICE_NAV_R1)
|
||||
#if defined(HAVE_RMENU)
|
||||
| (1ULL << RARCH_ANALOG_LEFT_Y_DPAD_UP)
|
||||
| (1ULL << RARCH_ANALOG_LEFT_Y_DPAD_DOWN)
|
||||
| (1ULL << RARCH_ANALOG_LEFT_X_DPAD_LEFT)
|
||||
| (1ULL << RARCH_ANALOG_LEFT_X_DPAD_RIGHT)
|
||||
| (1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_UP)
|
||||
| (1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_DOWN)
|
||||
| (1ULL << RARCH_ANALOG_RIGHT_X_DPAD_LEFT)
|
||||
| (1ULL << RARCH_ANALOG_RIGHT_X_DPAD_RIGHT)
|
||||
#endif
|
||||
)) && !(input_state & (1ULL << DEVICE_NAV_MENU));
|
||||
|
||||
return input_state;
|
||||
}
|
||||
|
@ -87,6 +87,8 @@ enum
|
||||
DEVICE_NAV_RIGHT,
|
||||
DEVICE_NAV_A,
|
||||
DEVICE_NAV_B,
|
||||
DEVICE_NAV_L,
|
||||
DEVICE_NAV_R,
|
||||
DEVICE_NAV_START,
|
||||
DEVICE_NAV_SELECT,
|
||||
DEVICE_NAV_MENU,
|
||||
@ -222,6 +224,8 @@ typedef enum
|
||||
RGUI_ACTION_SETTINGS,
|
||||
RGUI_ACTION_START,
|
||||
RGUI_ACTION_MESSAGE,
|
||||
RGUI_ACTION_SCROLL_DOWN,
|
||||
RGUI_ACTION_SCROLL_UP,
|
||||
RGUI_ACTION_NOOP
|
||||
} rgui_action_t;
|
||||
|
||||
|
@ -2657,6 +2657,10 @@ static int rgui_iterate(void *data)
|
||||
action = RGUI_ACTION_LEFT;
|
||||
else if (rgui->trigger_state & (1ULL << DEVICE_NAV_RIGHT))
|
||||
action = RGUI_ACTION_RIGHT;
|
||||
else if (rgui->trigger_state & (1ULL << DEVICE_NAV_L))
|
||||
action = RGUI_ACTION_SCROLL_UP;
|
||||
else if (rgui->trigger_state & (1ULL << DEVICE_NAV_R))
|
||||
action = RGUI_ACTION_SCROLL_DOWN;
|
||||
else if (rgui->trigger_state & (1ULL << DEVICE_NAV_B))
|
||||
action = RGUI_ACTION_CANCEL;
|
||||
else if (rgui->trigger_state & (1ULL << DEVICE_NAV_A))
|
||||
@ -2711,6 +2715,18 @@ static int rgui_iterate(void *data)
|
||||
else
|
||||
rgui->selection_ptr = rgui->selection_buf->size - 1;
|
||||
break;
|
||||
case RGUI_ACTION_SCROLL_UP:
|
||||
if (rgui->selection_ptr > 16)
|
||||
rgui->selection_ptr -= 16;
|
||||
else
|
||||
rgui->selection_ptr = 0;
|
||||
break;
|
||||
case RGUI_ACTION_SCROLL_DOWN:
|
||||
if (rgui->selection_ptr + 16 < rgui->selection_buf->size)
|
||||
rgui->selection_ptr += 16;
|
||||
else
|
||||
rgui->selection_ptr = rgui->selection_buf->size - 1;
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_CANCEL:
|
||||
if (rgui->menu_stack->size > 1)
|
||||
|
@ -2311,13 +2311,13 @@ static int select_rom(void *data, uint64_t input)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else if (input & (1ULL << DEVICE_NAV_L1))
|
||||
else if (input & (1ULL << DEVICE_NAV_L2))
|
||||
{
|
||||
const char * drive_map = menu_drive_mapping_previous();
|
||||
if (drive_map != NULL)
|
||||
filebrowser_set_root_and_ext(rgui->browser, rgui->browser->current_dir.extensions, drive_map);
|
||||
}
|
||||
else if (input & (1ULL << DEVICE_NAV_R1))
|
||||
else if (input & (1ULL << DEVICE_NAV_R2))
|
||||
{
|
||||
const char * drive_map = menu_drive_mapping_next();
|
||||
if (drive_map != NULL)
|
||||
@ -2985,7 +2985,6 @@ static void* rgui_init(void)
|
||||
|
||||
static void rgui_free(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
#ifdef _XBOX1
|
||||
#ifdef HAVE_MENU_PANEL
|
||||
if (menu_panel->vertex_buf)
|
||||
|
Loading…
x
Reference in New Issue
Block a user