diff --git a/src/window_ex.cpp b/src/window_ex.cpp index e4159328..4df37253 100644 --- a/src/window_ex.cpp +++ b/src/window_ex.cpp @@ -7,9 +7,19 @@ #include #include #ifdef __WXGTK3__ -#define GetXWindow(wxwin) (wxwin)->m_wxwindow ? \ - GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_wxwindow)) : \ - GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_widget)) +// Unlike GDK_WINDOW_XWINDOW, GDK_WINDOW_XID can't handle a NULL, so check 1st +static XID GetXWindow(const wxWindow* wxwin) { + if ((wxwin)->m_wxwindow) { + if (gtk_widget_get_window((wxwin)->m_wxwindow)) + return GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_wxwindow)); + return 0; + } + else { + if (gtk_widget_get_window((wxwin)->m_widget)) + return GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_widget)); + return 0; + } +} #else #define GetXWindow(wxwin) (wxwin)->m_wxwindow ? \ GDK_WINDOW_XWINDOW((wxwin)->m_wxwindow->window) : \