Skip to content

Commit

Permalink
xwayland: Transform pointer enter event coordinates
Browse files Browse the repository at this point in the history
Pointer enter event coordinates are surface relative and we need them to
be screen relative for pScreen->SetCursorPosition().

https://bugzilla.gnome.org/show_bug.cgi?id=758283

Signed-off-by: Rui Matos <tiagomatos@gmail.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
  • Loading branch information
rtcm authored and nwnk committed Oct 26, 2016
1 parent f5c6d75 commit f68ba7b
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion hw/xwayland/xwayland-input.c
Expand Up @@ -298,6 +298,7 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer,
int i;
int sx = wl_fixed_to_int(sx_w);
int sy = wl_fixed_to_int(sy_w);
int dx, dy;
ScreenPtr pScreen = xwl_seat->xwl_screen->screen;
ValuatorMask mask;

Expand All @@ -314,9 +315,11 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer,
xwl_seat->pointer_enter_serial = serial;

xwl_seat->focus_window = wl_surface_get_user_data(surface);
dx = xwl_seat->focus_window->window->drawable.x;
dy = xwl_seat->focus_window->window->drawable.y;

master = GetMaster(dev, POINTER_OR_FLOAT);
(*pScreen->SetCursorPosition) (dev, pScreen, sx, sy, TRUE);
(*pScreen->SetCursorPosition) (dev, pScreen, dx + sx, dy + sy, TRUE);

miPointerInvalidateSprite(master);

Expand Down

0 comments on commit f68ba7b

Please sign in to comment.