--- a/src/video/mir/SDL_mirevents.c Mon May 23 15:29:25 2016 -0300
+++ b/src/video/mir/SDL_mirevents.c Tue Jun 07 09:01:23 2016 -0700
@@ -136,7 +136,8 @@
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 @@
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);
}
--- a/src/video/mir/SDL_mirmouse.c Mon May 23 15:29:25 2016 -0300
+++ b/src/video/mir/SDL_mirmouse.c Tue Jun 07 09:01:23 2016 -0700
@@ -252,7 +252,7 @@
static int
MIR_SetRelativeMouseMode(SDL_bool enabled)
{
- return SDL_Unsupported();
+ return 0;
}
/* TODO Actually implement the cursor, need to wait for mir support */