gdk: Remove GdkWindow.set_device_cursor() vfunc
authorBenjamin Otte <otte@redhat.com>
Thu, 2 Nov 2017 01:02:37 +0000 (02:02 +0100)
committerBenjamin Otte <otte@redhat.com>
Thu, 2 Nov 2017 11:42:58 +0000 (12:42 +0100)
That one calls through to GdkDevice.set_window_cursor(), so let's just
use that one.

gdk/broadway/gdkwindow-broadway.c
gdk/broadway/gdkwindow-broadway.h
gdk/gdkwindow.c
gdk/gdkwindowimpl.h
gdk/mir/gdkmirwindowimpl.c
gdk/quartz/gdkwindow-quartz.c
gdk/wayland/gdkwindow-wayland.c
gdk/win32/gdkwindow-win32.c
gdk/win32/gdkwindow-win32.h
gdk/x11/gdkwindow-x11.c
gdk/x11/gdkwindow-x11.h

index 1fd37c96e5fabf8a994fc33c342637f2dcf5d56e..46fc891963a00d60f405c8ed4b797b0241793fd0 100644 (file)
@@ -157,8 +157,6 @@ static void
 gdk_window_impl_broadway_init (GdkWindowImplBroadway *impl)
 {
   impl->toplevel_window_type = -1;
-  impl->device_cursor = g_hash_table_new_full (NULL, NULL, NULL,
-                                               (GDestroyNotify) g_object_unref);
 }
 
 static void
@@ -183,8 +181,6 @@ gdk_window_impl_broadway_finalize (GObject *object)
   if (impl->cursor)
     g_object_unref (impl->cursor);
 
-  g_hash_table_destroy (impl->device_cursor);
-
   broadway_display->toplevels = g_list_remove (broadway_display->toplevels, impl);
 
   G_OBJECT_CLASS (gdk_window_impl_broadway_parent_class)->finalize (object);
@@ -613,31 +609,6 @@ gdk_broadway_window_set_transient_for (GdkWindow *window,
   _gdk_broadway_server_window_set_transient_for (display->server, impl->id, impl->transient_for);
 }
 
-static void
-gdk_window_broadway_set_device_cursor (GdkWindow *window,
-                                      GdkDevice *device,
-                                      GdkCursor *cursor)
-{
-  GdkWindowImplBroadway *impl;
-
-  g_return_if_fail (GDK_IS_WINDOW (window));
-  g_return_if_fail (GDK_IS_DEVICE (device));
-
-  impl = GDK_WINDOW_IMPL_BROADWAY (window->impl);
-
-  if (!cursor)
-    g_hash_table_remove (impl->device_cursor, device);
-  else
-    {
-      _gdk_broadway_cursor_update_theme (cursor);
-      g_hash_table_replace (impl->device_cursor,
-                            device, g_object_ref (cursor));
-    }
-
-  if (!GDK_WINDOW_DESTROYED (window))
-    GDK_DEVICE_GET_CLASS (device)->set_window_cursor (device, window, cursor);
-}
-
 static void
 gdk_window_broadway_get_geometry (GdkWindow *window,
                                  gint      *x,
@@ -1477,7 +1448,6 @@ gdk_window_impl_broadway_class_init (GdkWindowImplBroadwayClass *klass)
   impl_class->lower = gdk_window_broadway_lower;
   impl_class->restack_toplevel = gdk_window_broadway_restack_toplevel;
   impl_class->move_resize = gdk_window_broadway_move_resize;
-  impl_class->set_device_cursor = gdk_window_broadway_set_device_cursor;
   impl_class->get_geometry = gdk_window_broadway_get_geometry;
   impl_class->get_root_coords = gdk_window_broadway_get_root_coords;
   impl_class->get_device_state = gdk_window_broadway_get_device_state;
index 74a77057fc500d0e559e3dd5bcc278a394411ed3..5fe7c78026a74ccc2d6d55837c4fa9bbb710383b 100644 (file)
@@ -53,7 +53,6 @@ struct _GdkWindowImplBroadway
   cairo_surface_t *ref_surface;
 
   GdkCursor *cursor;
-  GHashTable *device_cursor;
 
   int id;
 
index 35de69a58c4294d09b8b493c0f4693b96287528c..8c1e13e81f86451938bf89da0480f0138fcc149d 100644 (file)
@@ -4252,7 +4252,7 @@ gdk_window_set_cursor_internal (GdkWindow *window,
 
   if (window->window_type == GDK_WINDOW_ROOT ||
       window->window_type == GDK_WINDOW_FOREIGN)
-    GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_device_cursor (window, device, cursor);
+    GDK_DEVICE_GET_CLASS (device)->set_window_cursor (device, window, cursor);
   else
     {
       GdkPointerWindowInfo *pointer_info;
@@ -5136,7 +5136,6 @@ update_cursor (GdkDisplay *display,
 {
   GdkWindow *cursor_window, *parent, *toplevel;
   GdkWindow *pointer_window;
-  GdkWindowImplClass *impl_class;
   GdkPointerWindowInfo *pointer_info;
   GdkDeviceGrabInfo *grab;
   GdkCursor *cursor;
@@ -5177,8 +5176,7 @@ update_cursor (GdkDisplay *display,
   /* Set all cursors on toplevel, otherwise its tricky to keep track of
    * which native window has what cursor set. */
   toplevel = get_event_toplevel (pointer_window);
-  impl_class = GDK_WINDOW_IMPL_GET_CLASS (toplevel->impl);
-  impl_class->set_device_cursor (toplevel, device, cursor);
+  GDK_DEVICE_GET_CLASS (device)->set_window_cursor (device, toplevel, cursor);
 }
 
 static gboolean
index 2c4e772a093bb9f1442cc6817ec58042eacb3669..2477ad6cb2c64ddd33f4e367015f01e17cba1784 100644 (file)
@@ -85,10 +85,6 @@ struct _GdkWindowImplClass
   void         (* set_events)           (GdkWindow       *window,
                                          GdkEventMask     event_mask);
 
-  void         (* set_device_cursor)    (GdkWindow       *window,
-                                         GdkDevice       *device,
-                                         GdkCursor       *cursor);
-
   void         (* get_geometry)         (GdkWindow       *window,
                                          gint            *x,
                                          gint            *y,
index 075c3b00dba9dc9db509fd8375649095372325f5..1c55ce3171f1ddeb5bdfb3a0968c17b125f4405d 100644 (file)
@@ -1267,27 +1267,6 @@ gdk_mir_window_impl_set_events (GdkWindow    *window,
   /* We send all events and let GDK decide */
 }
 
-static void
-gdk_mir_window_impl_set_device_cursor (GdkWindow *window,
-                                       GdkDevice *device,
-                                       GdkCursor *cursor)
-{
-  GdkMirWindowImpl *impl = GDK_MIR_WINDOW_IMPL (window->impl);
-  MirConnection *connection = gdk_mir_display_get_mir_connection (impl->display);
-  MirWindowSpec *spec;
-  const gchar *cursor_name;
-
-  if (cursor)
-    cursor_name = _gdk_mir_cursor_get_name (cursor);
-  else
-    cursor_name = mir_default_cursor_name;
-
-  spec = mir_create_window_spec (connection);
-  mir_window_spec_set_cursor_name (spec, cursor_name);
-  mir_window_apply_spec (impl->mir_window, spec);
-  mir_window_spec_release (spec);
-}
-
 static void
 gdk_mir_window_impl_get_geometry (GdkWindow *window,
                                   gint      *x,
@@ -2246,7 +2225,6 @@ gdk_mir_window_impl_class_init (GdkMirWindowImplClass *klass)
   impl_class->move_to_rect = gdk_mir_window_impl_move_to_rect;
   impl_class->get_events = gdk_mir_window_impl_get_events;
   impl_class->set_events = gdk_mir_window_impl_set_events;
-  impl_class->set_device_cursor = gdk_mir_window_impl_set_device_cursor;
   impl_class->get_geometry = gdk_mir_window_impl_get_geometry;
   impl_class->get_root_coords = gdk_mir_window_impl_get_root_coords;
   impl_class->get_device_state = gdk_mir_window_impl_get_device_state;
index 2e266a79d94580a37bb031771bd3b7d5be75efa3..429469b4421ff4f5361aafec9f785ac4b6762773 100644 (file)
@@ -1411,21 +1411,6 @@ gdk_window_quartz_restack_toplevel (GdkWindow *window,
     [impl->toplevel orderWindow:NSWindowBelow relativeTo:sibling_num];
 }
 
-static void
-gdk_window_quartz_set_device_cursor (GdkWindow *window,
-                                     GdkDevice *device,
-                                     GdkCursor *cursor)
-{
-  NSCursor *nscursor;
-
-  if (GDK_WINDOW_DESTROYED (window))
-    return;
-
-  nscursor = _gdk_quartz_cursor_get_ns_cursor (cursor);
-
-  [nscursor set];
-}
-
 static void
 gdk_window_quartz_get_geometry (GdkWindow *window,
                                 gint      *x,
@@ -2780,7 +2765,6 @@ gdk_window_impl_quartz_class_init (GdkWindowImplQuartzClass *klass)
   impl_class->lower = gdk_window_quartz_lower;
   impl_class->restack_toplevel = gdk_window_quartz_restack_toplevel;
   impl_class->move_resize = gdk_window_quartz_move_resize;
-  impl_class->set_device_cursor = gdk_window_quartz_set_device_cursor;
   impl_class->get_geometry = gdk_window_quartz_get_geometry;
   impl_class->get_root_coords = gdk_window_quartz_get_root_coords;
   impl_class->get_device_state = gdk_window_quartz_get_device_state;
index ca7f54f6fc47ad820c81e95e7d1885f83ebaa9ca..283b60499f9b43c2b2fe19b2761bee79145cb69e 100644 (file)
@@ -2708,18 +2708,6 @@ gdk_window_wayland_move_to_rect (GdkWindow          *window,
   impl->position_method = POSITION_METHOD_MOVE_TO_RECT;
 }
 
-static void
-gdk_window_wayland_set_device_cursor (GdkWindow *window,
-                                      GdkDevice *device,
-                                      GdkCursor *cursor)
-{
-  g_return_if_fail (GDK_IS_WINDOW (window));
-  g_return_if_fail (GDK_IS_DEVICE (device));
-
-  if (!GDK_WINDOW_DESTROYED (window))
-    GDK_DEVICE_GET_CLASS (device)->set_window_cursor (device, window, cursor);
-}
-
 static void
 gdk_window_wayland_get_geometry (GdkWindow *window,
                                  gint      *x,
@@ -3683,7 +3671,6 @@ _gdk_window_impl_wayland_class_init (GdkWindowImplWaylandClass *klass)
   impl_class->restack_toplevel = gdk_window_wayland_restack_toplevel;
   impl_class->move_resize = gdk_window_wayland_move_resize;
   impl_class->move_to_rect = gdk_window_wayland_move_to_rect;
-  impl_class->set_device_cursor = gdk_window_wayland_set_device_cursor;
   impl_class->get_geometry = gdk_window_wayland_get_geometry;
   impl_class->get_root_coords = gdk_window_wayland_get_root_coords;
   impl_class->get_device_state = gdk_window_wayland_get_device_state;
index d4c865c6b5c14294241e73752c891eff2441e9eb..0350a6cc929b678924b648a4c7db2f71a5499a75 100644 (file)
@@ -192,7 +192,6 @@ gdk_window_impl_win32_init (GdkWindowImplWin32 *impl)
   GdkDisplay *display = gdk_display_get_default ();
 
   impl->toplevel_window_type = -1;
-  impl->cursor = NULL;
   impl->hicon_big = NULL;
   impl->hicon_small = NULL;
   impl->hint_flags = 0;
@@ -202,14 +201,6 @@ gdk_window_impl_win32_init (GdkWindowImplWin32 *impl)
   impl->num_transients = 0;
   impl->changing_state = FALSE;
   impl->window_scale = 1;
-
-  if (display != NULL)
-    /* Replace WM-defined default cursor with the default cursor
-     * from our theme. Otherwise newly-opened windows (such as popup
-     * menus of all kinds) will have WM-default cursor when they are
-     * first shown, which will be replaced by our cursor only later on.
-     */
-    impl->cursor = _gdk_win32_display_get_cursor_for_type (display, GDK_LEFT_PTR);
 }
 
 static void
@@ -229,8 +220,6 @@ gdk_window_impl_win32_finalize (GObject *object)
       gdk_win32_handle_table_remove (window_impl->handle);
     }
 
-  g_clear_object (&window_impl->cursor);
-
   g_clear_pointer (&window_impl->snap_stash, g_free);
   g_clear_pointer (&window_impl->snap_stash_int, g_free);
 
@@ -2003,46 +1992,6 @@ _gdk_modal_current (void)
   return NULL;
 }
 
-static void
-gdk_win32_window_set_device_cursor (GdkWindow *window,
-                                    GdkDevice *device,
-                                    GdkCursor *cursor)
-{
-  GdkWindowImplWin32 *impl;
-  GdkCursor *previous_cursor;
-
-  impl = GDK_WINDOW_IMPL_WIN32 (window->impl);
-
-  if (GDK_WINDOW_DESTROYED (window))
-    return;
-
-  GDK_NOTE (MISC, g_print ("gdk_win32_window_set_cursor: %p: %p\n",
-                          GDK_WINDOW_HWND (window),
-                          cursor));
-
-  /* First get the old cursor, if any (we wait to free the old one
-   * since it may be the current cursor set in the Win32 API right
-   * now).
-   */
-  previous_cursor = impl->cursor;
-
-  if (cursor)
-    impl->cursor = g_object_ref (cursor);
-  else
-    /* Use default cursor otherwise. Don't just set NULL cursor,
-     * because that will just hide the cursor, which is not
-     * what the caller probably wanted.
-     */
-    impl->cursor = _gdk_win32_display_get_cursor_for_type (gdk_device_get_display (device),
-                                                           GDK_LEFT_PTR);
-
-  GDK_DEVICE_GET_CLASS (device)->set_window_cursor (device, window, impl->cursor);
-
-  /* Destroy the previous cursor */
-  if (previous_cursor != NULL)
-    g_object_unref (previous_cursor);
-}
-
 static void
 gdk_win32_window_get_geometry (GdkWindow *window,
                               gint      *x,
index 6e5f3d8405aa4b64fd4b69783aec914ffaac83e7..55928bceba8e99f88ab3fa83cd6670e3e0bc14fd 100644 (file)
@@ -232,7 +232,6 @@ struct _GdkWindowImplWin32
 
   gint8 toplevel_window_type;
 
-  GdkCursor *cursor;
   HICON   hicon_big;
   HICON   hicon_small;
 
index 09781ff1419f3ba60ae2a6405cfd267c35455f73..ddd08b1fb4750ee177f5d21be668286461c5cade 100644 (file)
@@ -152,8 +152,6 @@ G_DEFINE_TYPE (GdkWindowImplX11, gdk_window_impl_x11, GDK_TYPE_WINDOW_IMPL)
 static void
 gdk_window_impl_x11_init (GdkWindowImplX11 *impl)
 {  
-  impl->device_cursor = g_hash_table_new_full (NULL, NULL,
-                                               NULL, g_object_unref);
   impl->window_scale = 1;
   impl->frame_sync_enabled = TRUE;
 }
@@ -535,8 +533,6 @@ gdk_window_impl_x11_finalize (GObject *object)
   if (impl->cursor)
     g_object_unref (impl->cursor);
 
-  g_hash_table_destroy (impl->device_cursor);
-
   G_OBJECT_CLASS (gdk_window_impl_x11_parent_class)->finalize (object);
 }
 
@@ -2518,31 +2514,6 @@ gdk_x11_window_set_transient_for (GdkWindow *window,
                          GDK_WINDOW_XID (parent));
 }
 
-static void
-gdk_window_x11_set_device_cursor (GdkWindow *window,
-                                  GdkDevice *device,
-                                  GdkCursor *cursor)
-{
-  GdkWindowImplX11 *impl;
-
-  g_return_if_fail (GDK_IS_WINDOW (window));
-  g_return_if_fail (GDK_IS_DEVICE (device));
-
-  impl = GDK_WINDOW_IMPL_X11 (window->impl);
-
-  if (!cursor)
-    g_hash_table_remove (impl->device_cursor, device);
-  else
-    {
-      _gdk_x11_cursor_update_theme (cursor);
-      g_hash_table_replace (impl->device_cursor,
-                            device, g_object_ref (cursor));
-    }
-
-  if (!GDK_WINDOW_DESTROYED (window))
-    GDK_DEVICE_GET_CLASS (device)->set_window_cursor (device, window, cursor);
-}
-
 GdkCursor *
 _gdk_x11_window_get_cursor (GdkWindow *window)
 {
@@ -5032,7 +5003,6 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass)
   impl_class->lower = gdk_window_x11_lower;
   impl_class->restack_toplevel = gdk_window_x11_restack_toplevel;
   impl_class->move_resize = gdk_window_x11_move_resize;
-  impl_class->set_device_cursor = gdk_window_x11_set_device_cursor;
   impl_class->get_geometry = gdk_window_x11_get_geometry;
   impl_class->get_root_coords = gdk_window_x11_get_root_coords;
   impl_class->get_device_state = gdk_window_x11_get_device_state;
index 7feaf9ef9e2a70c96c028d2632e0f8abb0ed6e12..2199692327dfcbf75e98de0c6b235fcc5c71f9cc 100644 (file)
@@ -66,7 +66,6 @@ struct _GdkWindowImplX11
 
   GdkToplevelX11 *toplevel;    /* Toplevel-specific information */
   GdkCursor *cursor;
-  GHashTable *device_cursor;
 
   guint no_bg : 1;        /* Set when the window background is temporarily
                            * unset during resizing and scaling */