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);
m_clipPaintRegion = false;
-#ifndef __WXUNIVERSAL__
-#ifndef __WXGTK20__
+#if !defined(__WXUNIVERSAL__) && !defined(__WXGTK20__)
// The following code will result in all window-less widgets
// being redrawn because the wxWidgets class is allowed to
// paint over the window-less widgets.
gdk_event.type = GDK_EXPOSE;
gdk_event.window = pizza->bin_window;
gdk_event.count = 0;
+ gdk_event.send_event = TRUE;
wxRegionIterator upd( m_updateRegion );
while (upd)
}
}
}
-#endif
-#endif
+#endif // native GTK 1
m_updateRegion.Clear();
}
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