From 636ba3c242e225a3ac8d770ef53ee6d12d7ad00a Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Wed, 8 Sep 2010 20:01:32 +0000 Subject: [PATCH] Unregister configure callback, fixes #12447: wxGTK patch: Segfault on Drag&Drop git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@65480 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/dnd.cpp | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/gtk/dnd.cpp b/src/gtk/dnd.cpp index ce1c92472a..7ea14c1959 100644 --- a/src/gtk/dnd.cpp +++ b/src/gtk/dnd.cpp @@ -946,21 +946,27 @@ void wxDropSource::RegisterWindow() void wxDropSource::UnregisterWindow() { - if (!m_widget) - return; + if (m_widget) + { + g_signal_handlers_disconnect_by_func (m_widget, + (gpointer) source_drag_data_get, + this); + g_signal_handlers_disconnect_by_func (m_widget, + (gpointer) source_drag_data_delete, + this); + g_signal_handlers_disconnect_by_func (m_widget, + (gpointer) source_drag_begin, + this); + g_signal_handlers_disconnect_by_func (m_widget, + (gpointer) source_drag_end, + this); + } - g_signal_handlers_disconnect_by_func (m_widget, - (gpointer) source_drag_data_get, - this); - g_signal_handlers_disconnect_by_func (m_widget, - (gpointer) source_drag_data_delete, - this); - g_signal_handlers_disconnect_by_func (m_widget, - (gpointer) source_drag_begin, - this); - g_signal_handlers_disconnect_by_func (m_widget, - (gpointer) source_drag_end, - this); + if (m_iconWindow) + { + g_signal_handlers_disconnect_by_func (m_iconWindow, + (gpointer) gtk_dnd_window_configure_callback, this); + } } #endif