summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/parameter/originalpath.cpp8
-rw-r--r--src/live_effects/parameter/originalpath.h2
-rw-r--r--src/live_effects/parameter/path.cpp10
-rw-r--r--src/live_effects/parameter/path.h3
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();