// Purpose: wxNativeWindow implementation
// Author: Vadim Zeitlin
// Created: 2008-03-05
-// RCS-ID: $Id$
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#include "wx/nativewin.h"
#include <gtk/gtk.h>
+#include "wx/gtk/private/gtk2-compat.h"
#ifdef GDK_WINDOWING_X11
- #include <X11/Xlib.h>
+ #include <gdk/gdkx.h>
#endif
// ============================================================================
// we need to realize the window first before reparenting it
gtk_widget_realize(m_widget);
- gdk_window_reparent(m_widget->window, win, 0, 0);
+ gdk_window_reparent(gtk_widget_get_window(m_widget), win, 0, 0);
#ifdef GDK_WINDOWING_X11
// if the native window is destroyed, our own window will be destroyed too
// destroyed" GdkWindow, so intercept to DestroyNotify ourselves to fix
// this and also destroy the associated C++ object when its window is
// destroyed
- gdk_window_add_filter(m_widget->window, wxNativeContainerWindowFilter, this);
+ gdk_window_add_filter(gtk_widget_get_window(m_widget), wxNativeContainerWindowFilter, this);
#endif // GDK_WINDOWING_X11
// we should be initially visible as we suppose that the native window we
bool wxNativeContainerWindow::Create(wxNativeContainerWindowId anid)
{
bool rc;
+#ifdef __WXGTK3__
+#ifdef GDK_WINDOWING_X11
+ GdkWindow * const win = gdk_x11_window_foreign_new_for_display(gdk_display_get_default(), anid);
+#else
+ GdkWindow * const win = NULL;
+#endif
+#else
GdkWindow * const win = gdk_window_foreign_new(anid);
+#endif
if ( win )
{
rc = Create(win);
// because it's a private GDK function and calling normal
// gdk_window_destroy() results in X errors while nulling just the window
// pointer and destroying m_widget results in many GTK errors
+ GTKDisconnect(m_widget);
m_widget = NULL;
// notice that we intentionally don't use Close() nor Delete() here as our