From 5be978bbdfa45b8c20c479f3c58d5c5566f7bcfe Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Wed, 10 Mar 2021 08:08:09 +0100 Subject: [PATCH] radiant/cursor: get the display from the widget, attempt to support multiple displays and screens --- libs/gtkutil/cursor.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libs/gtkutil/cursor.cpp b/libs/gtkutil/cursor.cpp index 9ada67e6..42b1123c 100644 --- a/libs/gtkutil/cursor.cpp +++ b/libs/gtkutil/cursor.cpp @@ -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) -- 2.39.2