Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
MIR: Support relative mouse mode
- Loading branch information
Showing
with
15 additions
and
5 deletions.
-
+14
−4
src/video/mir/SDL_mirevents.c
-
+1
−1
src/video/mir/SDL_mirmouse.c
|
@@ -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 */ |
|
|