summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-03-05 21:53:38 +0000
committermental <mental@users.sourceforge.net>2006-03-05 21:53:38 +0000
commit0d2bb085316fe34d3a30228ac7778876cf7c1916 (patch)
treeb6724686fa7c1a970cb09505f594c2d4aa007500 /src
parentAdd DocumentSubset as groundwork for layers (diff)
downloadinkscape-0d2bb085316fe34d3a30228ac7778876cf7c1916.tar.gz
inkscape-0d2bb085316fe34d3a30228ac7778876cf7c1916.zip
Add signal for notification of object position changes
(bzr r206)
Diffstat (limited to 'src')
-rw-r--r--src/sp-object.cpp3
-rw-r--r--src/sp-object.h5
2 files changed, 8 insertions, 0 deletions
diff --git a/src/sp-object.cpp b/src/sp-object.cpp
index 4a1a2e09e..fd368dd61 100644
--- a/src/sp-object.cpp
+++ b/src/sp-object.cpp
@@ -192,6 +192,7 @@ sp_object_init(SPObject *object)
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;
@@ -221,6 +222,7 @@ sp_object_finalize(GObject *object)
}
spobject->_delete_signal.~signal();
+ spobject->_position_changed_signal.~signal();
}
namespace {
@@ -771,6 +773,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);
}
/**
diff --git a/src/sp-object.h b/src/sp-object.h
index 767f8b978..e853de097 100644
--- a/src/sp-object.h
+++ b/src/sp-object.h
@@ -322,6 +322,10 @@ struct SPObject : public GObject {
return _delete_signal.connect(slot);
}
+ sigc::connection connectPositionChanged(sigc::slot<void, SPObject *> slot) {
+ return _position_changed_signal.connect(slot);
+ }
+
/** @brief Returns the object which supercedes this one (if any).
*
* This is mainly useful for ensuring we can correctly perform a series of moves or deletes,
@@ -442,6 +446,7 @@ struct SPObject : public GObject {
void _requireSVGVersion(Inkscape::Version version);
sigc::signal<void, SPObject *> _delete_signal;
+ sigc::signal<void, SPObject *> _position_changed_signal;
SPObject *_successor;
CollectionPolicy _collection_policy;
gchar *_label;