diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2012-04-08 21:49:39 +0000 |
|---|---|---|
| committer | Johan B. C. Engelen <j.b.c.engelen@alumnus.utwente.nl> | 2012-04-08 21:49:39 +0000 |
| commit | 821270153ace522f49f9350200c148df4e09e0f4 (patch) | |
| tree | 27dfd8d8eb56bb30aa6b5579d9150854eb9ed281 /src | |
| parent | fix inclusion. (diff) | |
| download | inkscape-821270153ace522f49f9350200c148df4e09e0f4.tar.gz inkscape-821270153ace522f49f9350200c148df4e09e0f4.zip | |
clone original path lpe: add boilerplate code to allow to compensate for linked path movement. but it should be worked out how the actual compensation should be written to SVG. don't want to add something to the cloneLPE SVG syntax in a haste
(bzr r11188)
Diffstat (limited to 'src')
| -rw-r--r-- | src/live_effects/parameter/originalpath.cpp | 8 | ||||
| -rw-r--r-- | src/live_effects/parameter/originalpath.h | 2 | ||||
| -rw-r--r-- | src/live_effects/parameter/path.cpp | 10 | ||||
| -rw-r--r-- | src/live_effects/parameter/path.h | 3 |
4 files changed, 23 insertions, 0 deletions
diff --git a/src/live_effects/parameter/originalpath.cpp b/src/live_effects/parameter/originalpath.cpp index e5c16943c..71ab006d6 100644 --- a/src/live_effects/parameter/originalpath.cpp +++ b/src/live_effects/parameter/originalpath.cpp @@ -104,6 +104,14 @@ OriginalPathParam::linked_modified_callback(SPObject *linked_obj, guint /*flags* } void +OriginalPathParam::linked_transformed_callback(Geom::Affine const * /*rel_transf*/, SPItem * /*moved_item*/) +{ +/** \todo find good way to compensate for referenced path transform, like done for normal clones. + * See sp-use.cpp: sp_use_move_compensate */ +} + + +void OriginalPathParam::on_select_original_button_click() { SPDesktop *desktop = SP_ACTIVE_DESKTOP; diff --git a/src/live_effects/parameter/originalpath.h b/src/live_effects/parameter/originalpath.h index f05f17d9a..7dd17edb0 100644 --- a/src/live_effects/parameter/originalpath.h +++ b/src/live_effects/parameter/originalpath.h @@ -35,6 +35,8 @@ public: protected: virtual void linked_modified_callback(SPObject *linked_obj, guint flags); + virtual void linked_transformed_callback(Geom::Affine const *rel_transf, SPItem *moved_item); + void on_select_original_button_click(); private: diff --git a/src/live_effects/parameter/path.cpp b/src/live_effects/parameter/path.cpp index 186cfff9a..69c337a7c 100644 --- a/src/live_effects/parameter/path.cpp +++ b/src/live_effects/parameter/path.cpp @@ -326,6 +326,9 @@ PathParam::start_listening(SPObject * to) } linked_delete_connection = to->connectDelete(sigc::mem_fun(*this, &PathParam::linked_delete)); linked_modified_connection = to->connectModified(sigc::mem_fun(*this, &PathParam::linked_modified)); + if (SP_IS_ITEM(to)) { + linked_transformed_connection = SP_ITEM(to)->connectTransformed(sigc::mem_fun(*this, &PathParam::linked_transformed)); + } linked_modified(to, SP_OBJECT_MODIFIED_FLAG); // simulate linked_modified signal, so that path data is updated } @@ -334,6 +337,7 @@ PathParam::quit_listening(void) { linked_modified_connection.disconnect(); linked_delete_connection.disconnect(); + linked_transformed_connection.disconnect(); } void @@ -368,6 +372,11 @@ void PathParam::linked_modified(SPObject *linked_obj, guint flags) linked_modified_callback(linked_obj, flags); } +void PathParam::linked_transformed(Geom::Affine const *rel_transf, SPItem *moved_item) +{ + linked_transformed_callback(rel_transf, moved_item); +} + void PathParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/) { @@ -392,6 +401,7 @@ PathParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/) SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); } + /* CALLBACK FUNCTIONS FOR THE BUTTONS */ void PathParam::on_edit_button_click() diff --git a/src/live_effects/parameter/path.h b/src/live_effects/parameter/path.h index 7b51dc48a..a4f46f11f 100644 --- a/src/live_effects/parameter/path.h +++ b/src/live_effects/parameter/path.h @@ -70,13 +70,16 @@ protected: sigc::connection ref_changed_connection; sigc::connection linked_delete_connection; sigc::connection linked_modified_connection; + sigc::connection linked_transformed_connection; void ref_changed(SPObject *old_ref, SPObject *new_ref); void remove_link(); void start_listening(SPObject * to); void quit_listening(void); void linked_delete(SPObject *deleted); void linked_modified(SPObject *linked_obj, guint flags); + void linked_transformed(Geom::Affine const *rel_transf, SPItem *moved_item); virtual void linked_modified_callback(SPObject *linked_obj, guint flags); + virtual void linked_transformed_callback(Geom::Affine const * /*rel_transf*/, SPItem * /*moved_item*/) {}; void on_edit_button_click(); void on_copy_button_click(); |
