Mercurial > dwindows
comparison gtk3/dw.c @ 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 | d0f884083c63 |
children | 347b0f97c295 |
comparison
equal
deleted
inserted
replaced
2341:1a630cddf384 | 2342:5437aed23151 |
---|---|
3840 { | 3840 { |
3841 GdkModifierType state = 0; | 3841 GdkModifierType state = 0; |
3842 int gx, gy; | 3842 int gx, gy; |
3843 int _locked_by_me = FALSE; | 3843 int _locked_by_me = FALSE; |
3844 GdkDisplay *display; | 3844 GdkDisplay *display; |
3845 GdkDevice *device; | |
3846 #if GTK_CHECK_VERSION(3,20,0) | |
3847 GdkSeat *seat; | |
3848 #else | |
3849 GdkDeviceManager *manager; | |
3850 #endif | |
3851 | 3845 |
3852 DW_MUTEX_LOCK; | 3846 DW_MUTEX_LOCK; |
3853 #ifdef GDK_WINDOWING_X11 | 3847 #ifdef GDK_WINDOWING_X11 |
3854 display = gdk_display_get_default(); | 3848 display = gdk_display_get_default(); |
3849 | |
3850 if(display && GDK_IS_X11_DISPLAY(display)) | |
3851 { | |
3855 #if GTK_CHECK_VERSION(3,20,0) | 3852 #if GTK_CHECK_VERSION(3,20,0) |
3856 seat = gdk_display_get_default_seat(display); | 3853 GdkSeat *seat = gdk_display_get_default_seat(display); |
3857 device = gdk_seat_get_pointer(seat); | 3854 GdkDevice *device = gdk_seat_get_pointer(seat); |
3858 #else | 3855 #else |
3859 manager = gdk_display_get_device_manager(display); | 3856 GdkDeviceManager *manager = gdk_display_get_device_manager(display); |
3860 device = gdk_device_manager_get_client_pointer(manager); | 3857 GdkDevice *device = gdk_device_manager_get_client_pointer(manager); |
3861 #endif | 3858 #endif |
3862 gdk_window_get_device_position(gdk_x11_window_lookup_for_display(display, GDK_ROOT_WINDOW()), | 3859 gdk_window_get_device_position(gdk_x11_window_lookup_for_display(display, GDK_ROOT_WINDOW()), |
3863 device, &gx, &gy, &state); | 3860 device, &gx, &gy, &state); |
3861 } | |
3864 #endif | 3862 #endif |
3865 if(x) | 3863 if(x) |
3866 *x = gx; | 3864 *x = gx; |
3867 if(y) | 3865 if(y) |
3868 *y = gy; | 3866 *y = gy; |
3875 * x: X coordinate. | 3873 * x: X coordinate. |
3876 * y: Y coordinate. | 3874 * y: Y coordinate. |
3877 */ | 3875 */ |
3878 void dw_pointer_set_pos(long x, long y) | 3876 void dw_pointer_set_pos(long x, long y) |
3879 { | 3877 { |
3878 #ifdef GDK_WINDOWING_X11 | |
3880 int _locked_by_me = FALSE; | 3879 int _locked_by_me = FALSE; |
3881 GdkDisplay *display; | 3880 GdkDisplay *display; |
3882 GdkDevice *device; | 3881 GdkDevice *device; |
3882 | |
3883 DW_MUTEX_LOCK; | |
3884 display = gdk_display_get_default(); | |
3885 | |
3886 if(display && GDK_IS_X11_DISPLAY(display)) | |
3887 { | |
3883 #if GTK_CHECK_VERSION(3,20,0) | 3888 #if GTK_CHECK_VERSION(3,20,0) |
3884 GdkSeat *seat; | 3889 GdkSeat *seat = gdk_display_get_default_seat(display); |
3890 GdkDevice *device = gdk_seat_get_pointer(seat); | |
3885 #else | 3891 #else |
3886 GdkDeviceManager *manager; | 3892 GdkDeviceManager *manager = gdk_display_get_device_manager(display); |
3887 #endif | 3893 GdkDevice *device = gdk_device_manager_get_client_pointer(manager); |
3888 | 3894 #endif |
3889 DW_MUTEX_LOCK; | 3895 gdk_device_warp(device, gdk_screen_get_default(), x, y); |
3890 #ifdef GDK_WINDOWING_X11 | 3896 } |
3891 display = gdk_display_get_default(); | 3897 DW_MUTEX_UNLOCK; |
3892 #if GTK_CHECK_VERSION(3,20,0) | 3898 #endif |
3893 seat = gdk_display_get_default_seat(display); | |
3894 device = gdk_seat_get_pointer(seat); | |
3895 #else | |
3896 manager = gdk_display_get_device_manager(display); | |
3897 device = gdk_device_manager_get_client_pointer(manager); | |
3898 #endif | |
3899 gdk_device_warp(device, gdk_screen_get_default(), x, y); | |
3900 #endif | |
3901 DW_MUTEX_UNLOCK; | |
3902 } | 3899 } |
3903 | 3900 |
3904 #define _DW_TREE_CONTAINER 1 | 3901 #define _DW_TREE_CONTAINER 1 |
3905 #define _DW_TREE_TREE 2 | 3902 #define _DW_TREE_TREE 2 |
3906 #define _DW_TREE_LISTBOX 3 | 3903 #define _DW_TREE_LISTBOX 3 |
9525 /* Set some rational defaults.. just in case */ | 9522 /* Set some rational defaults.. just in case */ |
9526 *vert = 28; | 9523 *vert = 28; |
9527 *horz = 12; | 9524 *horz = 12; |
9528 | 9525 |
9529 /* See if the current window manager supports _NET_REQUEST_FRAME_EXTENTS */ | 9526 /* See if the current window manager supports _NET_REQUEST_FRAME_EXTENTS */ |
9530 if(gdk_x11_screen_supports_net_wm_hint(gdk_screen_get_default(), request_extents)) | 9527 if(display && GDK_IS_X11_DISPLAY(display) && gdk_x11_screen_supports_net_wm_hint(gdk_screen_get_default(), request_extents)) |
9531 { | 9528 { |
9532 Display *xdisplay = GDK_DISPLAY_XDISPLAY(display); | 9529 Display *xdisplay = GDK_DISPLAY_XDISPLAY(display); |
9533 GdkWindow *root_window = gdk_get_default_root_window(); | 9530 GdkWindow *root_window = gdk_get_default_root_window(); |
9534 Window xroot_window = GDK_WINDOW_XID(root_window); | 9531 Window xroot_window = GDK_WINDOW_XID(root_window); |
9535 Atom extents_request_atom = gdk_x11_get_xatom_by_name_for_display(display, request); | 9532 Atom extents_request_atom = gdk_x11_get_xatom_by_name_for_display(display, request); |