Mercurial > dwindows
changeset 2324:610c66b17fbc
GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
Apparently you can build with multiple backends, so this prevents them being
called when not using the X11 backend. Functions will do nothing on non-X11
backends currently.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 17 Feb 2021 07:29:40 +0000 |
parents | 4b04943319c5 |
children | 55524dbe6a54 |
files | gtk4/dw.c |
diffstat | 1 files changed, 22 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk4/dw.c Wed Feb 17 06:21:27 2021 +0000 +++ b/gtk4/dw.c Wed Feb 17 07:29:40 2021 +0000 @@ -1708,8 +1708,9 @@ DW_FUNCTION_RESTORE_PARAM1(handle, HWND) { int retval = DW_ERROR_UNKNOWN; - - if(handle && GTK_IS_WINDOW(handle)) + GdkDisplay *display = gdk_display_get_default(); + + if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display)) { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); @@ -1740,8 +1741,9 @@ DW_FUNCTION_RESTORE_PARAM1(handle, HWND) { int retval = DW_ERROR_UNKNOWN; - - if(handle && GTK_IS_WINDOW(handle)) + GdkDisplay *display = gdk_display_get_default(); + + if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display)) { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); @@ -2343,7 +2345,9 @@ DW_FUNCTION_NO_RETURN(dw_window_capture) DW_FUNCTION_RESTORE_PARAM1(handle, HWND) { - if(_DWXGrabbedDisplay == NULL && handle && GTK_IS_WINDOW(handle)) + GdkDisplay *display = gdk_display_get_default(); + + if(_DWXGrabbedDisplay == NULL && handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display)) { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); @@ -2372,6 +2376,7 @@ DW_FUNCTION_ADD_PARAM DW_FUNCTION_NO_RETURN(dw_window_release) { + /* Don't need X11 test, _DWXGrabbedDisplay won't get set unless X11 */ if(_DWXGrabbedDisplay) { XUngrabPointer(_DWXGrabbedDisplay, CurrentTime); @@ -3119,7 +3124,7 @@ { GdkDisplay *display = gdk_display_get_default(); - if(display) + if(display && GDK_IS_X11_DISPLAY(display)) { Display *xdisplay = gdk_x11_display_get_xdisplay(display); Window xrootwin = gdk_x11_display_get_xrootwindow(display); @@ -8603,7 +8608,9 @@ DW_FUNCTION_NO_RETURN(dw_window_set_pos) DW_FUNCTION_RESTORE_PARAM3(handle, HWND, x, long, y, long) { - if(handle && GTK_IS_WINDOW(handle)) + GdkDisplay *display = gdk_display_get_default(); + + if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display)) { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); @@ -8670,24 +8677,19 @@ #ifdef GDK_WINDOWING_X11 { GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle)); - - if(surface) + GdkDisplay *display = gdk_display_get_default(); + + if(surface && display && GDK_IS_X11_DISPLAY(display)) { - GdkDisplay *display = gdk_display_get_default(); XWindowAttributes xwa; int ix = 0, iy = 0; - - if(display) - { - Window child, xrootwin = gdk_x11_display_get_xrootwindow(display); - - XTranslateCoordinates(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface), - xrootwin, 0, 0, &ix, &iy, &child); - - } - + Window child, xrootwin = gdk_x11_display_get_xrootwindow(display); + + XTranslateCoordinates(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface), + xrootwin, 0, 0, &ix, &iy, &child); XGetWindowAttributes(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface), &xwa); + if(x) *x = (long)(ix - xwa.x); if(y)