Files
Phoenix/src/window_ex.cpp
Scott Talbert 69af9e3fb0 Fix crash when calling GetHandle() on unrealized window with wxGTK3
Unlike GDK_WINDOW_XWINDOW(), GDK_WINDOW_XID() seems unable to handle NULLs,
so check for a NULL first.  This is similar to a patch I submitted for Classic:
http://trac.wxwidgets.org/ticket/16765
2016-03-12 13:37:54 -05:00

47 lines
1.1 KiB
C++

#ifdef __WXMSW__
#include <wx/msw/private.h>
#endif
#ifdef __WXGTK__
#include <gdk/gdkx.h>
#include <gtk/gtk.h>
#ifdef __WXGTK3__
// 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) : \
GDK_WINDOW_XWINDOW((wxwin)->m_widget->window)
#endif
#endif
wxUIntPtr wxPyGetWinHandle(const wxWindow* win)
{
#ifdef __WXMSW__
return (wxUIntPtr)win->GetHandle();
#endif
#if defined(__WXGTK__) || defined(__WXX11__)
return (wxUIntPtr)GetXWindow(win);
#endif
#ifdef __WXMAC__
return (wxUIntPtr)win->GetHandle();
#endif
return 0;
}