X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4106cebb952b5cd64af2b9a5e22b8c10d358aefb..a0845d45830eb22769107a61a6cb3485fa21922b:/src/gtk1/window.cpp diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 0813f585cd..092022df0b 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -2883,11 +2883,22 @@ wxWindowGTK::~wxWindowGTK() m_isBeingDeleted = true; m_hasVMT = false; + // destroy children before destroying this window itself + DestroyChildren(); + + // unhook focus handlers to prevent stray events being + // propagated to this (soon to be) dead object + if (m_focusWidget != NULL) + { + gtk_signal_disconnect_by_func( GTK_OBJECT(m_focusWidget), + (GtkSignalFunc) gtk_window_focus_in_callback, (gpointer) this ); + gtk_signal_disconnect_by_func( GTK_OBJECT(m_focusWidget), + (GtkSignalFunc) gtk_window_focus_out_callback, (gpointer) this ); + } + if (m_widget) Show( false ); - DestroyChildren(); - #ifdef HAVE_XIM if (m_ic) gdk_ic_destroy (m_ic); @@ -4279,12 +4290,10 @@ PangoContext *wxWindowGTK::GtkGetPangoDefaultContext() return gtk_widget_get_pango_context( m_widget ); } +// MR: Returns the same as GtkGetPangoDefaultContext until the symbol can be removed in 2.7.x PangoContext *wxWindowGTK::GtkGetPangoX11Context() { - if (!m_x11Context) - m_x11Context = pango_x_get_context( gdk_display ); - - return m_x11Context; + return gtk_widget_get_pango_context( m_widget ); } #endif