[dia] Some more fixes for the old DiagramTree



commit 28ea74ce4e0b272351bb04a1779ce0d6665c0a92
Author: Hans Breuer <hans breuer org>
Date:   Sat Apr 25 22:42:46 2009 +0200

    Some more fixes for the old DiagramTree
---
 app/diagram_tree.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/app/diagram_tree.c b/app/diagram_tree.c
index dddd557..d91bcd1 100644
--- a/app/diagram_tree.c
+++ b/app/diagram_tree.c
@@ -35,7 +35,7 @@
 #include "dia-application.h"
 
 /* delete a tree (the widget is destroyed, but not the diagrams */
-static void diagram_tree_delete(DiagramTree *tree);
+static void diagram_tree_delete(GtkCTree *ctree, DiagramTree *tree);
 
 struct _DiagramTree {
   GtkCTree *tree;		/* the tree widget */
@@ -380,6 +380,9 @@ diagram_tree_new(GList *diagrams, GtkWindow *window,
 		     "button_press_event",
 		   G_CALLBACK(button_press_callback),
 		     (gpointer)result);
+  g_signal_connect (GTK_OBJECT (result->tree), "destroy",
+		    G_CALLBACK (diagram_tree_delete),
+		    result);
 		     
   g_signal_connect (G_OBJECT (dia_application_get ()),
                     "diagram_add",
@@ -390,8 +393,8 @@ diagram_tree_new(GList *diagrams, GtkWindow *window,
 		    G_CALLBACK (_diagram_change),
 		    result);
   g_signal_connect (G_OBJECT(dia_application_get ()),
-                    "diagram_add",
-		    G_CALLBACK (_diagram_add),
+                    "diagram_remove",
+		    G_CALLBACK (_diagram_remove),
 		    result);
 
   while (diagrams) {
@@ -410,10 +413,13 @@ diagram_tree_new(GList *diagrams, GtkWindow *window,
 }
 
 static void
-diagram_tree_delete(DiagramTree *tree) 
+diagram_tree_delete(GtkCTree *ctree, DiagramTree *tree) 
 {
   g_return_if_fail(tree);
-  gtk_widget_destroy(GTK_WIDGET(tree->tree));
+
+  g_signal_handlers_disconnect_by_func (G_OBJECT (dia_application_get ()), _diagram_add,    tree);
+  g_signal_handlers_disconnect_by_func (G_OBJECT (dia_application_get ()), _diagram_change, tree);
+  g_signal_handlers_disconnect_by_func (G_OBJECT (dia_application_get ()), _diagram_remove, tree);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]