Code

noop: dialogs/rdf.cpp: Mark a few pointers as not being written through. Make rdf_ma...
[inkscape.git] / src / dialogs / object-attributes.cpp
index 05370d1d025ad1de1c6c472cd1dd77984e9ab8f0..f6369f39ad306a87acf892d0712786da6223b84f 100644 (file)
 #include "sp-anchor.h"
 #include "sp-attribute-widget.h"
 
+#include <sigc++/connection.h>
+#include <sigc++/functors/ptr_fun.h>
+#include <sigc++/adaptors/bind.h>
+
 struct SPAttrDesc {
     gchar const *label;
     gchar const *attribute;
@@ -55,7 +59,7 @@ static const SPAttrDesc image_desc[] = {
 
 
 static void
-object_released (GtkObject *object, GtkWidget *widget)
+object_released (SPObject *object, GtkWidget *widget)
 {
     gtk_widget_destroy (widget);
 }
@@ -65,14 +69,16 @@ object_released (GtkObject *object, GtkWidget *widget)
 static void
 window_destroyed (GtkObject *window, GtkObject *object)
 {
-    sp_signal_disconnect_by_data (object, window);
+    sigc::connection *release_connection = (sigc::connection *)g_object_get_data(G_OBJECT(window), "release_connection");
+    release_connection->disconnect();
+    delete release_connection;
 }
 
 
 
 static void
-sp_object_attr_show_dialog ( SPObject *object, 
-                             const SPAttrDesc *desc, 
+sp_object_attr_show_dialog ( SPObject *object,
+                             const SPAttrDesc *desc,
                              const gchar *tag )
 {
     const gchar **labels, **attrs;
@@ -91,7 +97,7 @@ sp_object_attr_show_dialog ( SPObject *object,
         attrs[i] = desc[i].attribute;
     }
 
-    title = g_strdup_printf (_("%s attributes"), tag);
+    title = g_strdup_printf (_("%s Properties"), tag);
     w = sp_window_new (title, TRUE);
     g_free (title);
 
@@ -99,11 +105,12 @@ sp_object_attr_show_dialog ( SPObject *object,
     gtk_widget_show (t);
     gtk_container_add (GTK_CONTAINER (w), t);
 
-    g_signal_connect ( G_OBJECT (w), "destroy", 
+    g_signal_connect ( G_OBJECT (w), "destroy",
                        G_CALLBACK (window_destroyed), object );
-                       
-    g_signal_connect ( G_OBJECT (object), "release", 
-                       G_CALLBACK (object_released), w );
+
+    sigc::connection *release_connection = new sigc::connection();
+    *release_connection = object->connectRelease(sigc::bind<1>(sigc::ptr_fun(&object_released), w));
+    g_object_set_data(G_OBJECT(w), "release_connection", release_connection);
 
     gtk_widget_show (w);