OS : windows 10
Build env : msys2 + mingw32 + gtk 3.24.33
I write a simple gtk3 application, and set cursor on realize like:
static void realize(GtkWidget *widget)
{
GTK_WIDGET_CLASS(test_parent_class)->realize(widget);
GdkDisplay *gdk_display;
GdkWindow *gdk_window = GDK_WINDOW(gtk_widget_get_window(widget));
gdk_display = gdk_window_get_display(gdk_window);
GdkCursor* cursor = gdk_cursor_new_from_name(gdk_display,"crosshair");
gdk_window_set_cursor(gdk_window,cursor);
gdk_cursor_unref(cursor);
}
It worked well, and i add GDK_WINDOW_HWND code like follow:
static void realize(GtkWidget *widget)
{
GTK_WIDGET_CLASS(test_parent_class)->realize(widget);
GdkWindow* win = gtk_widget_get_window(widget);
g_draw_hwnd = GDK_WINDOW_HWND(win);
GdkDisplay *gdk_display;
GdkWindow *gdk_window = GDK_WINDOW(gtk_widget_get_window(widget));
gdk_display = gdk_window_get_display(gdk_window);
GdkCursor* cursor = gdk_cursor_new_from_name(gdk_display,"crosshair");
gdk_window_set_cursor(gdk_window,cursor);
gdk_cursor_unref(cursor);
}
It caused problem, the cursor icon is changed but recovery soon after mouse move or mouse button down.
Notice:
According to my research, it maybe caused by gdk_window_ensure_native
called by GDK_WINDOW_HWND
, it created new win32 native window for widget .
It maybe a bug , so i submit a git issue , is there a temporary solution ?