Code

Disabling transientize callback - it's currently causing some data loss
[inkscape.git] / src / sp-object.cpp
index 62a442d0a6483c48de2c2e49eb5b54df4014fad2..9b6c249172b18839ebd50548171d2c55132f08a4 100644 (file)
@@ -737,8 +737,9 @@ sp_object_remove_child(SPObject *object, Inkscape::XML::Node *child)
 {
     debug("id=%x, typename=%s", object, g_type_name_from_instance((GTypeInstance*)object));
     SPObject *ochild = sp_object_get_child_by_repr(object, child);
-    g_return_if_fail(ochild != NULL);
-    sp_object_detach(object, ochild);
+    g_return_if_fail (ochild != NULL || !strcmp("comment", child->name())); // comments have no objects
+    if (ochild)
+        sp_object_detach(object, ochild);
 }
 
 /**
@@ -825,10 +826,10 @@ sp_object_invoke_build(SPObject *object, SPDocument *document, Inkscape::XML::No
 
             /* Redefine ID, if required */
             if ((id == NULL) || (strcmp(id, realid) != 0)) {
-                gboolean undo_sensitive=sp_document_get_undo_sensitive(document);
-                sp_document_set_undo_sensitive(document, FALSE);
+                bool saved = sp_document_get_undo_sensitive(document);
+                sp_document_set_undo_sensitive(document, false);
                 object->repr->setAttribute("id", realid);
-                sp_document_set_undo_sensitive(document, undo_sensitive);
+                sp_document_set_undo_sensitive(document, saved);
             }
         }
     } else {
@@ -851,11 +852,11 @@ void SPObject::releaseReferences() {
 
     sp_repr_remove_listener_by_data(this->repr, this);
 
+    this->_release_signal.emit(this);
     SPObjectClass *klass=(SPObjectClass *)G_OBJECT_GET_CLASS(this);
     if (klass->release) {
         klass->release(this);
     }
-    this->_release_signal.emit(this);
 
     /* all hrefs should be released by the "release" handlers */
     g_assert(this->hrefcount == 0);
@@ -1198,6 +1199,9 @@ SPObject::requestDisplayUpdate(unsigned int flags)
     }
 }
 
+/**
+ * Update views
+ */
 void
 SPObject::updateDisplay(SPCtx *ctx, unsigned int flags)
 {
@@ -1268,7 +1272,10 @@ SPObject::requestModified(unsigned int flags)
 }
 
 /** 
- * This is what actually delivers the modified signals
+ *  Emits the MODIFIED signal with the object's flags.
+ *  The object's mflags are the original set aside during the update pass for 
+ *  later delivery here.  Once emitModified() is called, those flags don't
+ *  need to be stored any longer.
  */
 void
 SPObject::emitModified(unsigned int flags)