diff -up wxPython-src-3.0.2.0/wxPython/src/helpers.cpp.getxwindowcrash wxPython-src-3.0.2.0/wxPython/src/helpers.cpp --- wxPython-src-3.0.2.0/wxPython/src/helpers.cpp.getxwindowcrash 2014-10-13 18:37:52.000000000 -0400 +++ wxPython-src-3.0.2.0/wxPython/src/helpers.cpp 2015-01-03 22:05:35.936010783 -0500 @@ -29,9 +29,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(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) : \