radiant/cursor: get the display from the widget, attempt to support multiple displays...
authorThomas Debesse <dev@illwieckz.net>
Wed, 10 Mar 2021 07:08:09 +0000 (08:08 +0100)
committerThomas Debesse <dev@illwieckz.net>
Wed, 10 Mar 2021 10:51:54 +0000 (11:51 +0100)
libs/gtkutil/cursor.cpp

index 9ada67e66e5ade147f052bf26be2bd944ac9d83e..42b1123ca05cd8f56fe4e30efdd93918e67495fc 100644 (file)
@@ -46,13 +46,15 @@ void default_cursor( ui::Widget widget ){
 }
 
 void Sys_GetCursorPos( ui::Widget widget, int *x, int *y ){
-       gdk_display_get_pointer( gdk_display_get_default(), 0, x, y, 0 );
+       GdkDisplay *display = gtk_widget_get_display( GTK_WIDGET( widget ) );
+       // No need to store the screen, it will be recovered from widget again.
+       gdk_display_get_pointer( display, NULL, x, y, NULL );
 }
 
 void Sys_SetCursorPos( ui::Widget widget, int x, int y ){
-       GdkScreen *screen;
-       gdk_display_get_pointer( gdk_display_get_default(), &screen, 0, 0, 0 );
-       gdk_display_warp_pointer( gdk_display_get_default(), screen, x, y );
+       GdkDisplay *display = gtk_widget_get_display( GTK_WIDGET( widget ) );
+       GdkScreen *screen = gtk_widget_get_screen( GTK_WIDGET( widget ) );
+       gdk_display_warp_pointer( display, screen, x, y );
 }
 
 gboolean DeferredMotion::gtk_motion(ui::Widget widget, GdkEventMotion *event, DeferredMotion *self)