gdkwindow: Update cursor for tablet tools in the window
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 25 Jul 2017 13:37:10 +0000 (15:37 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 25 Jul 2017 16:36:12 +0000 (18:36 +0200)
This check must be done explicitly on Wayland as the master device for
tablet tools differ from the Core Pointer. This ensures that whenever a
tablet tool is inside a window and the cursor is programmatically changed,
it will be visually updated too.

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

gdk/gdkwindow.c

index 689d666100b20bcc49af8b0da8fc7ff5fe21c21d..1c7ea5340cc0c8ea62bc8fad33fcccf7eed489ad 100644 (file)
@@ -6583,8 +6583,18 @@ gdk_window_set_cursor (GdkWindow *window,
 
       for (s = seats; s; s = s->next)
         {
+          GList *devices, *d;
+
           device = gdk_seat_get_pointer (s->data);
           gdk_window_set_cursor_internal (window, device, window->cursor);
+
+          devices = gdk_seat_get_slaves (s->data, GDK_SEAT_CAPABILITY_TABLET_STYLUS);
+          for (d = devices; d; d = d->next)
+            {
+              device = gdk_device_get_associated_device (d->data);
+              gdk_window_set_cursor_internal (window, device, window->cursor);
+            }
+          g_list_free (devices);
         }
 
       g_list_free (seats);