Skip to content

Commit

Permalink
MIR: Support relative mouse mode
Browse files Browse the repository at this point in the history
  • Loading branch information
BrandonSchaefer committed Jun 7, 2016
1 parent ea2f5e5 commit f0708fc
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
18 changes: 14 additions & 4 deletions src/video/mir/SDL_mirevents.c
Expand Up @@ -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
Expand Down Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion src/video/mir/SDL_mirmouse.c
Expand Up @@ -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 */
Expand Down

0 comments on commit f0708fc

Please sign in to comment.