Mercurial > dwindows
changeset 2342:5437aed23151
GTK3: Isolate some X11 specific calls so it functions on Wayland.
Wayland is missing some key features that X11 has so functionality will be reduced.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 03 Mar 2021 15:42:12 +0000 |
parents | 1a630cddf384 |
children | 347b0f97c295 |
files | gtk3/dw.c |
diffstat | 1 files changed, 27 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk3/dw.c Wed Mar 03 07:38:48 2021 +0000 +++ b/gtk3/dw.c Wed Mar 03 15:42:12 2021 +0000 @@ -3842,25 +3842,23 @@ int gx, gy; int _locked_by_me = FALSE; GdkDisplay *display; - GdkDevice *device; -#if GTK_CHECK_VERSION(3,20,0) - GdkSeat *seat; -#else - GdkDeviceManager *manager; -#endif DW_MUTEX_LOCK; #ifdef GDK_WINDOWING_X11 display = gdk_display_get_default(); + + if(display && GDK_IS_X11_DISPLAY(display)) + { #if GTK_CHECK_VERSION(3,20,0) - seat = gdk_display_get_default_seat(display); - device = gdk_seat_get_pointer(seat); + GdkSeat *seat = gdk_display_get_default_seat(display); + GdkDevice *device = gdk_seat_get_pointer(seat); #else - manager = gdk_display_get_device_manager(display); - device = gdk_device_manager_get_client_pointer(manager); -#endif - gdk_window_get_device_position(gdk_x11_window_lookup_for_display(display, GDK_ROOT_WINDOW()), - device, &gx, &gy, &state); + GdkDeviceManager *manager = gdk_display_get_device_manager(display); + GdkDevice *device = gdk_device_manager_get_client_pointer(manager); +#endif + gdk_window_get_device_position(gdk_x11_window_lookup_for_display(display, GDK_ROOT_WINDOW()), + device, &gx, &gy, &state); + } #endif if(x) *x = gx; @@ -3877,28 +3875,27 @@ */ void dw_pointer_set_pos(long x, long y) { +#ifdef GDK_WINDOWING_X11 int _locked_by_me = FALSE; GdkDisplay *display; GdkDevice *device; -#if GTK_CHECK_VERSION(3,20,0) - GdkSeat *seat; -#else - GdkDeviceManager *manager; -#endif - - DW_MUTEX_LOCK; -#ifdef GDK_WINDOWING_X11 + + DW_MUTEX_LOCK; display = gdk_display_get_default(); + + if(display && GDK_IS_X11_DISPLAY(display)) + { #if GTK_CHECK_VERSION(3,20,0) - seat = gdk_display_get_default_seat(display); - device = gdk_seat_get_pointer(seat); + GdkSeat *seat = gdk_display_get_default_seat(display); + GdkDevice *device = gdk_seat_get_pointer(seat); #else - manager = gdk_display_get_device_manager(display); - device = gdk_device_manager_get_client_pointer(manager); -#endif - gdk_device_warp(device, gdk_screen_get_default(), x, y); -#endif - DW_MUTEX_UNLOCK; + GdkDeviceManager *manager = gdk_display_get_device_manager(display); + GdkDevice *device = gdk_device_manager_get_client_pointer(manager); +#endif + gdk_device_warp(device, gdk_screen_get_default(), x, y); + } + DW_MUTEX_UNLOCK; +#endif } #define _DW_TREE_CONTAINER 1 @@ -9527,7 +9524,7 @@ *horz = 12; /* See if the current window manager supports _NET_REQUEST_FRAME_EXTENTS */ - if(gdk_x11_screen_supports_net_wm_hint(gdk_screen_get_default(), request_extents)) + if(display && GDK_IS_X11_DISPLAY(display) && gdk_x11_screen_supports_net_wm_hint(gdk_screen_get_default(), request_extents)) { Display *xdisplay = GDK_DISPLAY_XDISPLAY(display); GdkWindow *root_window = gdk_get_default_root_window();