diff --git a/src/sp-object.cpp b/src/sp-object.cpp
index 4a1a2e09ed84a6a28825af91485be617cbaec2a9..9068c4ba2ae0e0b2bdf19f6e65739df32077db58 100644 (file)
--- a/src/sp-object.cpp
+++ b/src/sp-object.cpp
object->_collection_policy = SPObject::COLLECT_WITH_PARENT;
new (&object->_delete_signal) sigc::signal<void, SPObject *>();
+ new (&object->_position_changed_signal) sigc::signal<void, SPObject *>();
object->_successor = NULL;
object->_label = NULL;
}
spobject->_delete_signal.~signal();
+ spobject->_position_changed_signal.~signal();
}
namespace {
-Inkscape::Util::shared_ptr<char> stringify(SPObject *obj) {
+Inkscape::Util::ptr_shared<char> stringify(SPObject *obj) {
char *temp=g_strdup_printf("%p", obj);
- Inkscape::Util::shared_ptr<char> result=Inkscape::Util::share_string(temp);
+ Inkscape::Util::ptr_shared<char> result=Inkscape::Util::share_string(temp);
g_free(temp);
return result;
}
-Inkscape::Util::shared_ptr<char> stringify(unsigned n) {
+Inkscape::Util::ptr_shared<char> stringify(unsigned n) {
char *temp=g_strdup_printf("%u", n);
- Inkscape::Util::shared_ptr<char> result=Inkscape::Util::share_string(temp);
+ Inkscape::Util::ptr_shared<char> result=Inkscape::Util::share_string(temp);
g_free(temp);
return result;
}
static Category category() { return REFCOUNT; }
- Inkscape::Util::shared_ptr<char> name() const {
+ Inkscape::Util::ptr_shared<char> name() const {
if ( _type == REF) {
return Inkscape::Util::share_static_string("sp-object-ref");
} else {
}
private:
- Inkscape::Util::shared_ptr<char> _object;
+ Inkscape::Util::ptr_shared<char> _object;
unsigned _refcount;
Type _type;
};
g_return_if_fail(SP_IS_OBJECT(object));
g_return_if_fail(object->parent == parent);
+ sp_object_invoke_release(object);
+
SPObject *prev=NULL;
for ( SPObject *child = parent->children ; child && child != object ;
child = child->next )
object->next = NULL;
object->parent = NULL;
- sp_object_invoke_release(object);
parent->_updateTotalHRefCount(-object->_total_hrefcount);
sp_object_unref(object, parent);
}
@@ -771,6 +774,7 @@ static void sp_object_order_changed(SPObject *object, Inkscape::XML::Node *child
g_return_if_fail(ochild != NULL);
SPObject *prev = new_ref ? sp_object_get_child_by_repr(object, new_ref) : NULL;
sp_object_reorder(ochild, prev);
+ ochild->_position_changed_signal.emit(ochild);
}
/**
g_assert(object != NULL);
g_assert(SP_IS_OBJECT(object));
- // we need to remember our parent
- // g_assert(!object->parent);
- g_assert(!object->next);
g_assert(object->document);
g_assert(object->repr);