Remove old signal handlers when target widgets are destroyed
[pspp] / src / ui / gui / psppire-selector.c
index 3b1bfe00abd41d208d6a924f00da269d0a118901..82e21399768a05548cef4fc7b59e25fa4acf8ae3 100644 (file)
@@ -883,6 +883,12 @@ on_dest_data_delete (GtkTreeModel *tree_model,
 }
 
 
+static void
+remove_selector_handlers (PsppireSelector *selector, GObject *sel)
+{
+  g_signal_handlers_disconnect_by_data (sel, selector);
+}
+
 static void
 on_dest_model_changed (PsppireSelector *selector)
 {
@@ -896,6 +902,8 @@ on_dest_model_changed (PsppireSelector *selector)
   
   g_signal_connect (model, "row-deleted", G_CALLBACK (on_dest_data_delete),
                    selector);
+
+  g_signal_connect (selector, "destroy", G_CALLBACK (remove_selector_handlers), model);
   
   if ( selector->selecting ) return;