app: pass a GdkWindow not GdkDisplay to gimp_cursor_new()

Preparation for adding HiDPI cursors.
This commit is contained in:
Michael Natterer
2018-12-31 14:04:04 +01:00
parent 3738ff3ffd
commit 47ff7e1467
3 changed files with 27 additions and 28 deletions

View File

@ -243,21 +243,24 @@ get_cursor_pixbuf (GimpCursor *cursor)
} }
GdkCursor * GdkCursor *
gimp_cursor_new (GdkDisplay *display, gimp_cursor_new (GdkWindow *window,
GimpHandedness cursor_handedness, GimpHandedness cursor_handedness,
GimpCursorType cursor_type, GimpCursorType cursor_type,
GimpToolCursorType tool_cursor, GimpToolCursorType tool_cursor,
GimpCursorModifier modifier) GimpCursorModifier modifier)
{ {
GdkDisplay *display;
GimpCursor *bmcursor = NULL; GimpCursor *bmcursor = NULL;
GimpCursor *bmmodifier = NULL; GimpCursor *bmmodifier = NULL;
GimpCursor *bmtool = NULL; GimpCursor *bmtool = NULL;
GdkCursor *cursor; GdkCursor *cursor;
GdkPixbuf *pixbuf; GdkPixbuf *pixbuf;
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); g_return_val_if_fail (GDK_IS_WINDOW (window), NULL);
g_return_val_if_fail (cursor_type < GIMP_CURSOR_LAST, NULL); g_return_val_if_fail (cursor_type < GIMP_CURSOR_LAST, NULL);
display = gdk_window_get_display (window);
if (cursor_type <= (GimpCursorType) GDK_LAST_CURSOR) if (cursor_type <= (GimpCursorType) GDK_LAST_CURSOR)
return gdk_cursor_new_for_display (display, (GdkCursorType) cursor_type); return gdk_cursor_new_for_display (display, (GdkCursorType) cursor_type);
@ -411,20 +414,23 @@ gimp_cursor_set (GtkWidget *widget,
GimpToolCursorType tool_cursor, GimpToolCursorType tool_cursor,
GimpCursorModifier modifier) GimpCursorModifier modifier)
{ {
GdkWindow *window;
GdkCursor *cursor; GdkCursor *cursor;
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (gtk_widget_get_realized (widget)); g_return_if_fail (gtk_widget_get_realized (widget));
cursor = gimp_cursor_new (gtk_widget_get_display (widget), window = gtk_widget_get_window (widget);
cursor = gimp_cursor_new (window,
cursor_handedness, cursor_handedness,
cursor_type, cursor_type,
tool_cursor, tool_cursor,
modifier); modifier);
gdk_window_set_cursor (gtk_widget_get_window (widget), cursor); gdk_window_set_cursor (window, cursor);
g_object_unref (cursor); g_object_unref (cursor);
gdk_display_flush (gtk_widget_get_display (widget)); gdk_display_flush (gdk_window_get_display (window));
} }
GimpCursorType GimpCursorType

View File

@ -19,7 +19,7 @@
#define __GIMP_CURSOR_H__ #define __GIMP_CURSOR_H__
GdkCursor * gimp_cursor_new (GdkDisplay *display, GdkCursor * gimp_cursor_new (GdkWindow *window,
GimpHandedness cursor_handedness, GimpHandedness cursor_handedness,
GimpCursorType cursor_type, GimpCursorType cursor_type,
GimpToolCursorType tool_cursor, GimpToolCursorType tool_cursor,

View File

@ -1553,9 +1553,7 @@ gimp_dialog_factory_show (GimpDialogFactory *factory)
void void
gimp_dialog_factory_set_busy (GimpDialogFactory *factory) gimp_dialog_factory_set_busy (GimpDialogFactory *factory)
{ {
GdkDisplay *display = NULL; GList *list;
GdkCursor *cursor = NULL;
GList *list;
if (! factory) if (! factory)
return; return;
@ -1566,27 +1564,20 @@ gimp_dialog_factory_set_busy (GimpDialogFactory *factory)
if (GTK_IS_WIDGET (widget) && gtk_widget_is_toplevel (widget)) if (GTK_IS_WIDGET (widget) && gtk_widget_is_toplevel (widget))
{ {
if (!display || display != gtk_widget_get_display (widget)) GdkWindow *window = gtk_widget_get_window (widget);
if (window)
{ {
display = gtk_widget_get_display (widget); GdkCursor *cursor = gimp_cursor_new (window,
GIMP_HANDEDNESS_RIGHT,
if (cursor) (GimpCursorType) GDK_WATCH,
g_object_unref (cursor); GIMP_TOOL_CURSOR_NONE,
GIMP_CURSOR_MODIFIER_NONE);
cursor = gimp_cursor_new (display, gdk_window_set_cursor (window, cursor);
GIMP_HANDEDNESS_RIGHT, g_object_unref (cursor);
(GimpCursorType) GDK_WATCH,
GIMP_TOOL_CURSOR_NONE,
GIMP_CURSOR_MODIFIER_NONE);
} }
if (gtk_widget_get_window (widget))
gdk_window_set_cursor (gtk_widget_get_window (widget), cursor);
} }
} }
if (cursor)
g_object_unref (cursor);
} }
void void
@ -1603,8 +1594,10 @@ gimp_dialog_factory_unset_busy (GimpDialogFactory *factory)
if (GTK_IS_WIDGET (widget) && gtk_widget_is_toplevel (widget)) if (GTK_IS_WIDGET (widget) && gtk_widget_is_toplevel (widget))
{ {
if (gtk_widget_get_window (widget)) GdkWindow *window = gtk_widget_get_window (widget);
gdk_window_set_cursor (gtk_widget_get_window (widget), NULL);
if (window)
gdk_window_set_cursor (window, NULL);
} }
} }
} }