mirror of
https://github.com/libretro/RetroArch
synced 2025-04-07 13:23:32 +00:00
(menu) improve mouse navigation a bit.
This commit is contained in:
parent
ddfbea107d
commit
18d67aefc7
@ -158,6 +158,8 @@ typedef struct
|
|||||||
int16_t dy;
|
int16_t dy;
|
||||||
int16_t x;
|
int16_t x;
|
||||||
int16_t y;
|
int16_t y;
|
||||||
|
int16_t screen_x;
|
||||||
|
int16_t screen_y;
|
||||||
bool left;
|
bool left;
|
||||||
bool right;
|
bool right;
|
||||||
bool oldleft;
|
bool oldleft;
|
||||||
|
@ -711,6 +711,7 @@ static int mouse_iterate(unsigned *action)
|
|||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
runloop_t *runloop = rarch_main_get_ptr();
|
runloop_t *runloop = rarch_main_get_ptr();
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
video_viewport_t vp;
|
||||||
|
|
||||||
if (!menu)
|
if (!menu)
|
||||||
return -1;
|
return -1;
|
||||||
@ -727,11 +728,16 @@ static int mouse_iterate(unsigned *action)
|
|||||||
menu->mouse.dy = 0;
|
menu->mouse.dy = 0;
|
||||||
menu->mouse.x = 0;
|
menu->mouse.x = 0;
|
||||||
menu->mouse.y = 0;
|
menu->mouse.y = 0;
|
||||||
|
menu->mouse.screen_x = 0;
|
||||||
|
menu->mouse.screen_y = 0;
|
||||||
menu->mouse.scrollup = 0;
|
menu->mouse.scrollup = 0;
|
||||||
menu->mouse.scrolldown = 0;
|
menu->mouse.scrolldown = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!video_driver_viewport_info(&vp))
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (menu->mouse.hwheeldown)
|
if (menu->mouse.hwheeldown)
|
||||||
{
|
{
|
||||||
*action = MENU_ACTION_LEFT;
|
*action = MENU_ACTION_LEFT;
|
||||||
@ -763,8 +769,11 @@ static int mouse_iterate(unsigned *action)
|
|||||||
menu->mouse.dy = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
|
menu->mouse.dy = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
|
||||||
0, RETRO_DEVICE_ID_MOUSE_Y);
|
0, RETRO_DEVICE_ID_MOUSE_Y);
|
||||||
|
|
||||||
menu->mouse.x += menu->mouse.dx;
|
menu->mouse.screen_x += menu->mouse.dx;
|
||||||
menu->mouse.y += menu->mouse.dy;
|
menu->mouse.screen_y += menu->mouse.dy;
|
||||||
|
|
||||||
|
menu->mouse.x = ((int)menu->mouse.screen_x * (int)menu->frame_buf.width) / (int)vp.width;
|
||||||
|
menu->mouse.y = ((int)menu->mouse.screen_y * (int)menu->frame_buf.height) / (int)vp.height;
|
||||||
|
|
||||||
if (menu->mouse.x < 5)
|
if (menu->mouse.x < 5)
|
||||||
menu->mouse.x = 5;
|
menu->mouse.x = 5;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user