From 7a3359223179468b42fa0130457ec60694ce6ec1 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 20 Dec 2010 14:07:11 +0100 Subject: [PATCH] gdk: Move gdk_cursor_get_image() to the base class .. and make it call a vfunc on the cursor --- gdk/gdkcursor.c | 21 +++++++++++++++++++++ gdk/gdkcursorprivate.h | 2 ++ gdk/x11/gdkcursor-x11.c | 37 ++++++++++++------------------------- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/gdk/gdkcursor.c b/gdk/gdkcursor.c index f6d229c36b..fe5f38ced7 100644 --- a/gdk/gdkcursor.c +++ b/gdk/gdkcursor.c @@ -374,3 +374,24 @@ gdk_cursor_get_display (GdkCursor *cursor) return cursor->display; } +/** + * gdk_cursor_get_image: + * @cursor: a #GdkCursor + * + * Returns a #GdkPixbuf with the image used to display the cursor. + * + * Note that depending on the capabilities of the windowing system and + * on the cursor, GDK may not be able to obtain the image data. In this + * case, %NULL is returned. + * + * Returns: (transfer full): a #GdkPixbuf representing @cursor, or %NULL + * + * Since: 2.8 + */ +GdkPixbuf* +gdk_cursor_get_image (GdkCursor *cursor) +{ + g_return_val_if_fail (GDK_IS_CURSOR (cursor), NULL); + + return GDK_CURSOR_GET_CLASS (cursor)->get_image (cursor); +} diff --git a/gdk/gdkcursorprivate.h b/gdk/gdkcursorprivate.h index 51501d1906..6a3a407d9b 100644 --- a/gdk/gdkcursorprivate.h +++ b/gdk/gdkcursorprivate.h @@ -45,6 +45,8 @@ struct _GdkCursor struct _GdkCursorClass { GObjectClass parent_class; + + GdkPixbuf * (* get_image) (GdkCursor * cursor); }; G_END_DECLS diff --git a/gdk/x11/gdkcursor-x11.c b/gdk/x11/gdkcursor-x11.c index 5e0a966b12..4fe6cef91a 100644 --- a/gdk/x11/gdkcursor-x11.c +++ b/gdk/x11/gdkcursor-x11.c @@ -181,6 +181,8 @@ _gdk_x11_cursor_display_finalize (GdkDisplay *display) G_DEFINE_TYPE (GdkX11Cursor, gdk_x11_cursor, GDK_TYPE_CURSOR) +static GdkPixbuf* gdk_x11_cursor_get_image (GdkCursor *cursor); + void gdk_x11_cursor_finalize (GObject *object) { @@ -197,11 +199,14 @@ gdk_x11_cursor_finalize (GObject *object) } static void -gdk_x11_cursor_class_init (GdkX11CursorClass *cursor_class) +gdk_x11_cursor_class_init (GdkX11CursorClass *xcursor_class) { - GObjectClass *object_class = G_OBJECT_CLASS (cursor_class); + GdkCursorClass *cursor_class = GDK_CURSOR_CLASS (xcursor_class); + GObjectClass *object_class = G_OBJECT_CLASS (xcursor_class); object_class->finalize = gdk_x11_cursor_finalize; + + cursor_class->get_image = gdk_x11_cursor_get_image; } static void @@ -323,22 +328,8 @@ gdk_x11_cursor_get_xcursor (GdkCursor *cursor) #if defined(HAVE_XCURSOR) && defined(HAVE_XFIXES) && XFIXES_MAJOR >= 2 -/** - * gdk_cursor_get_image: - * @cursor: a #GdkCursor - * - * Returns a #GdkPixbuf with the image used to display the cursor. - * - * Note that depending on the capabilities of the windowing system and - * on the cursor, GDK may not be able to obtain the image data. In this - * case, %NULL is returned. - * - * Returns: (transfer full): a #GdkPixbuf representing @cursor, or %NULL - * - * Since: 2.8 - */ -GdkPixbuf* -gdk_cursor_get_image (GdkCursor *cursor) +static GdkPixbuf* +gdk_x11_cursor_get_image (GdkCursor *cursor) { Display *xdisplay; GdkX11Cursor *private; @@ -350,9 +341,7 @@ gdk_cursor_get_image (GdkCursor *cursor) GdkPixbuf *pixbuf; gchar *theme; - g_return_val_if_fail (cursor != NULL, NULL); - - private = (GdkX11Cursor *) cursor; + private = GDK_X11_CURSOR (cursor); xdisplay = GDK_DISPLAY_XDISPLAY (gdk_cursor_get_display (cursor)); @@ -509,11 +498,9 @@ gdk_x11_display_set_cursor_theme (GdkDisplay *display, #else -GdkPixbuf* -gdk_cursor_get_image (GdkCursor *cursor) +static GdkPixbuf* +gdk_x11_cursor_get_image (GdkCursor *cursor) { - g_return_val_if_fail (cursor != NULL, NULL); - return NULL; }