Code

Disabling transientize callback - it's currently causing some data loss
[inkscape.git] / src / sp-object.cpp
index b16cd9a1ab27c3caa191602505d8f9cc507b9d6d..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);
 }
 
 /**
@@ -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)