Remove run-time dependencies on X11 backend with GTK3

As with Wayland, the X11 backend may not be available at run-time,
so types defined in it can't be used
This commit is contained in:
Paul Cornett
2021-03-24 11:25:01 -07:00
parent afc3aa773a
commit 0995797158
2 changed files with 8 additions and 4 deletions

View File

@@ -32,16 +32,19 @@ inline gpointer wxGtkGetIdFromWidget(GtkWidget* widget)
GdkWindow* window = gtk_widget_get_window(widget); GdkWindow* window = gtk_widget_get_window(widget);
wxASSERT(window); wxASSERT(window);
#ifdef __WXGTK3__
const char* name = g_type_name(G_TYPE_FROM_INSTANCE(window));
#endif
#ifdef GDK_WINDOWING_X11 #ifdef GDK_WINDOWING_X11
#ifdef __WXGTK3__ #ifdef __WXGTK3__
if ( GDK_IS_X11_WINDOW(window) ) if (strcmp("GdkX11Window", name) == 0)
#endif #endif
{ {
return (gpointer)GDK_WINDOW_XID(window); return (gpointer)GDK_WINDOW_XID(window);
} }
#endif #endif
#ifdef GDK_WINDOWING_WAYLAND #ifdef GDK_WINDOWING_WAYLAND
if ( GDK_IS_WAYLAND_WINDOW(window) ) if (strcmp("GdkWaylandWindow", name) == 0)
{ {
return (gpointer)gdk_wayland_window_get_wl_surface(window); return (gpointer)gdk_wayland_window_get_wl_surface(window);
} }

View File

@@ -457,8 +457,9 @@ bool wxGLCanvasEGL::CreateSurface()
} }
GdkWindow *window = GTKGetDrawingWindow(); GdkWindow *window = GTKGetDrawingWindow();
const char* name = g_type_name(G_TYPE_FROM_INSTANCE(window));
#ifdef GDK_WINDOWING_X11 #ifdef GDK_WINDOWING_X11
if ( GDK_IS_X11_WINDOW(window) ) if (strcmp("GdkX11Window", name) == 0)
{ {
m_xwindow = GDK_WINDOW_XID(window); m_xwindow = GDK_WINDOW_XID(window);
m_surface = eglCreatePlatformWindowSurface(m_display, *m_config, m_surface = eglCreatePlatformWindowSurface(m_display, *m_config,
@@ -467,7 +468,7 @@ bool wxGLCanvasEGL::CreateSurface()
} }
#endif #endif
#ifdef GDK_WINDOWING_WAYLAND #ifdef GDK_WINDOWING_WAYLAND
if ( GDK_IS_WAYLAND_WINDOW(window) ) if (strcmp("GdkWaylandWindow", name) == 0)
{ {
int x, y; int x, y;
gdk_window_get_origin(window, &x, &y); gdk_window_get_origin(window, &x, &y);