commit 7e04c8a

Michael Forney  ·  2013-06-21 08:50:11 +0000 UTC
parent 2859b0b
pointer: Fix pointer.set_cursor
1 files changed,  +11, -2
+11, -2
 1@@ -100,17 +100,26 @@ static void set_cursor(struct wl_client * client,
 2                        int32_t hotspot_x, int32_t hotspot_y)
 3 {
 4     struct swc_pointer * pointer = wl_resource_get_user_data(resource);
 5-    struct swc_surface * surface = wl_resource_get_user_data(surface_resource);
 6+    struct swc_surface * surface;
 7     struct swc_event event;
 8 
 9     printf("set_cursor\n");
10 
11+    surface = surface_resource ? wl_resource_get_user_data(surface_resource)
12+                               : NULL;
13+
14+    if (surface)
15+    {
16+        surface->geometry.x = wl_fixed_to_int(pointer->x) - hotspot_x;
17+        surface->geometry.y = wl_fixed_to_int(pointer->y) - hotspot_y;
18+    }
19+
20     pointer->cursor.surface = surface;
21     pointer->cursor.hotspot_x = hotspot_x;
22     pointer->cursor.hotspot_y = hotspot_y;
23 
24     event.type = SWC_POINTER_CURSOR_CHANGED;
25-    event.data = surface;
26+    event.data = pointer;
27 
28     wl_signal_emit(&pointer->event_signal, &event);
29 }