diff --git a/src/sp-object.cpp b/src/sp-object.cpp
index 0153fedc2e84d22bddecd9d6bd657c9c8acb199e..85e8a4e9ab4ad8898967f1de925bd74da2dbcb97 100644 (file)
--- a/src/sp-object.cpp
+++ b/src/sp-object.cpp
#include "style.h"
#include "sp-object-repr.h"
#include "sp-root.h"
+#include "sp-style-elem.h"
+#include "sp-script.h"
#include "streq.h"
#include "strneq.h"
#include "xml/repr.h"
void
SPObject::requestOrphanCollection() {
g_return_if_fail(document != NULL);
+
+ // do not remove style or script elements (Bug #276244)
+ if (SP_IS_STYLE_ELEM(this))
+ return;
+ if (SP_IS_SCRIPT(this))
+ return;
+
document->queueForOrphanCollection(this);
/** \todo
}
}
- if (((SPObjectClass *) G_OBJECT_GET_CLASS(this))->update)
- ((SPObjectClass *) G_OBJECT_GET_CLASS(this))->update(this, ctx, flags);
+ try
+ {
+ if (((SPObjectClass *) G_OBJECT_GET_CLASS(this))->update)
+ ((SPObjectClass *) G_OBJECT_GET_CLASS(this))->update(this, ctx, flags);
+ }
+ catch(...)
+ {
+ /** \todo
+ * in case of catching an exception we need to inform the user somehow that the document is corrupted
+ * maybe by implementing an document flag documentOk
+ * or by a modal error dialog
+ */
+ g_warning("SPObject::updateDisplay(SPCtx *ctx, unsigned int flags) : throw in ((SPObjectClass *) G_OBJECT_GET_CLASS(this))->update(this, ctx, flags);");
+ }
update_in_progress --;
}
}
}
-/**
- * Return sodipodi version of first root ancestor or (0,0).
- */
-Inkscape::Version
-sp_object_get_sodipodi_version(SPObject *object)
-{
- static Inkscape::Version const zero_version(0, 0);
-
- while (object) {
- if (SP_IS_ROOT(object)) {
- return SP_ROOT(object)->version.sodipodi;
- }
- object = SP_OBJECT_PARENT(object);
- }
-
- return zero_version;
-}
-
/**
* Returns previous object in sibling list or NULL.
*/