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);