MIR: Support relative mouse mode
parent
ea2f5e5930
commit
f0708fc9dd
|
@ -136,7 +136,8 @@ HandleMouseButton(SDL_Window* sdl_window, Uint8 state, MirPointerEvent const* po
|
|||
static void
|
||||
HandleMouseMotion(SDL_Window* sdl_window, int x, int y)
|
||||
{
|
||||
SDL_SendMouseMotion(sdl_window, 0, 0, x, y);
|
||||
SDL_Mouse* mouse = SDL_GetMouse();
|
||||
SDL_SendMouseMotion(sdl_window, 0, mouse->relative_mode, x, y);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -218,11 +219,20 @@ HandleMouseEvent(MirPointerEvent const* pointer, SDL_Window* sdl_window)
|
|||
SDL_Mouse* mouse = SDL_GetMouse();
|
||||
x = MIR_mir_pointer_event_axis_value(pointer, mir_pointer_axis_x);
|
||||
y = MIR_mir_pointer_event_axis_value(pointer, mir_pointer_axis_y);
|
||||
|
||||
if (mouse && (mouse->x != x || mouse->y != y)) {
|
||||
if (mouse->relative_mode) {
|
||||
int relative_x = MIR_mir_pointer_event_axis_value(pointer, mir_pointer_axis_relative_x);
|
||||
int relative_y = MIR_mir_pointer_event_axis_value(pointer, mir_pointer_axis_relative_y);
|
||||
HandleMouseMotion(sdl_window, relative_x, relative_y);
|
||||
}
|
||||
else {
|
||||
HandleMouseMotion(sdl_window, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
hscroll = MIR_mir_pointer_event_axis_value(pointer, mir_pointer_axis_hscroll);
|
||||
vscroll = MIR_mir_pointer_event_axis_value(pointer, mir_pointer_axis_vscroll);
|
||||
|
||||
if (mouse && (mouse->x != x || mouse->y != y))
|
||||
HandleMouseMotion(sdl_window, x, y);
|
||||
if (vscroll != 0 || hscroll != 0)
|
||||
HandleMouseScroll(sdl_window, hscroll, vscroll);
|
||||
}
|
||||
|
|
|
@ -252,7 +252,7 @@ MIR_WarpMouseGlobal(int x, int y)
|
|||
static int
|
||||
MIR_SetRelativeMouseMode(SDL_bool enabled)
|
||||
{
|
||||
return SDL_Unsupported();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* TODO Actually implement the cursor, need to wait for mir support */
|
||||
|
|
Loading…
Reference in New Issue