shell: Update focused surface pointer coordinates in popup grab
authorJonas Ådahl <jadahl@gmail.com>
Mon, 11 Aug 2014 20:44:02 +0000 (22:44 +0200)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Mon, 18 Aug 2014 12:36:39 +0000 (15:36 +0300)
The commit 'input: Send leave and enter pair when the surface moves
under the cursor' introduced focused surface local pointer coordinates
to keep track of if a surface had been moved or transformed in a way
that the pointer posititon relative to that surface would change.
Update these coordinates also for the popup grab as otherwise every
pointer motion during a popup grab results in leave and then enter
events.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
desktop-shell/shell.c

index d756076..ec72287 100644 (file)
@@ -2982,6 +2982,11 @@ popup_grab_motion(struct weston_pointer_grab *grab, uint32_t time,
        struct wl_resource *resource;
        wl_fixed_t sx, sy;
 
+       if (pointer->focus) {
+               weston_view_from_global_fixed(pointer->focus, x, y,
+                                             &pointer->sx, &pointer->sy);
+       }
+
        weston_pointer_move(pointer, x, y);
 
        wl_resource_for_each(resource, &pointer->focus_resource_list) {