summaryrefslogtreecommitdiffstats
path: root/src/live_effects/parameter
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2017-10-01 21:59:23 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2017-10-01 21:59:23 +0000
commitfc21cbb9a2d2f830c217d7ea96311be36a561e62 (patch)
treead73f7dacf6b09745dfd5bcc2d659095a16db0fe /src/live_effects/parameter
parentA little styling tweak to a LPE expander (diff)
downloadinkscape-fc21cbb9a2d2f830c217d7ea96311be36a561e62.tar.gz
inkscape-fc21cbb9a2d2f830c217d7ea96311be36a561e62.zip
Add better transform handle to Clone Item LPE
Diffstat (limited to 'src/live_effects/parameter')
-rw-r--r--src/live_effects/parameter/item.cpp10
-rw-r--r--src/live_effects/parameter/item.h5
-rw-r--r--src/live_effects/parameter/originalitem.cpp14
-rw-r--r--src/live_effects/parameter/originalitem.h2
-rw-r--r--src/live_effects/parameter/originalitemarray.cpp2
5 files changed, 19 insertions, 14 deletions
diff --git a/src/live_effects/parameter/item.cpp b/src/live_effects/parameter/item.cpp
index e075cab1a..bf7402d99 100644
--- a/src/live_effects/parameter/item.cpp
+++ b/src/live_effects/parameter/item.cpp
@@ -43,6 +43,7 @@ ItemParam::ItemParam( const Glib::ustring& label, const Glib::ustring& tip,
href(NULL),
ref( (SPObject*)effect->getLPEObj() )
{
+ last_transform = Geom::identity();
defvalue = g_strdup(default_value);
ref_changed_connection = ref.changedSignal().connect(sigc::mem_fun(*this, &ItemParam::ref_changed));
}
@@ -213,9 +214,18 @@ ItemParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/)
{
emit_changed();
SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ last_transform = Geom::identity();
}
void
+ItemParam::linked_transformed_callback(Geom::Affine const *rel_transf, SPItem */*moved_item*/)
+{
+ last_transform = *rel_transf;
+ SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG);
+}
+
+
+void
ItemParam::on_link_button_click()
{
Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get();
diff --git a/src/live_effects/parameter/item.h b/src/live_effects/parameter/item.h
index b98294258..d32098db5 100644
--- a/src/live_effects/parameter/item.h
+++ b/src/live_effects/parameter/item.h
@@ -35,14 +35,13 @@ public:
virtual bool param_readSVGValue(const gchar * strvalue);
virtual gchar * param_getSVGValue() const;
virtual gchar * param_getDefaultSVGValue() const;
-
virtual void param_set_default();
virtual void param_update_default(const gchar * default_value);
void param_set_and_write_default();
virtual void addCanvasIndicators(SPLPEItem const* lpeitem, std::vector<Geom::PathVector> &hp_vec);
-
sigc::signal <void> signal_item_pasted;
sigc::signal <void> signal_item_changed;
+ Geom::Affine last_transform;
bool changed; /* this gets set whenever the path is changed (this is set to true, and then the signal_item_changed signal is emitted).
* the user must set it back to false if she wants to use it sensibly */
protected:
@@ -61,7 +60,7 @@ protected:
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*/) {};
+ virtual void linked_transformed_callback(Geom::Affine const *rel_transf, SPItem */*moved_item*/);
void on_link_button_click();
void emit_changed();
diff --git a/src/live_effects/parameter/originalitem.cpp b/src/live_effects/parameter/originalitem.cpp
index 6de70be17..e828e1800 100644
--- a/src/live_effects/parameter/originalitem.cpp
+++ b/src/live_effects/parameter/originalitem.cpp
@@ -35,7 +35,6 @@ OriginalItemParam::OriginalItemParam( const Glib::ustring& label, const Glib::us
Effect* effect)
: ItemParam(label, tip, key, wr, effect, "")
{
- _insensitive = false;
}
OriginalItemParam::~OriginalItemParam()
@@ -88,17 +87,16 @@ OriginalItemParam::param_newWidget()
void
OriginalItemParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/)
{
- if (!_insensitive) {
- emit_changed();
- SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG);
- }
+ emit_changed();
+ SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ last_transform = Geom::identity();
}
void
-OriginalItemParam::linked_transformed_callback(Geom::Affine const * /*rel_transf*/, SPItem * /*moved_item*/)
+OriginalItemParam::linked_transformed_callback(Geom::Affine const * rel_transf, SPItem *moved_item)
{
-/** \todo find good way to compensate for referenced item transform, like done for normal clones.
- * See sp-use.cpp: sp_use_move_compensate */
+ last_transform = *rel_transf;
+ SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
diff --git a/src/live_effects/parameter/originalitem.h b/src/live_effects/parameter/originalitem.h
index 9b692c503..168728f86 100644
--- a/src/live_effects/parameter/originalitem.h
+++ b/src/live_effects/parameter/originalitem.h
@@ -23,7 +23,6 @@ public:
Inkscape::UI::Widget::Registry* wr,
Effect* effect);
virtual ~OriginalItemParam();
- void setInsensitive(bool insensitive) { insensitive = _insensitive; }
bool linksToItem() const { return (href != NULL); }
SPItem * getObject() const { return ref.getObject(); }
@@ -36,7 +35,6 @@ protected:
void on_select_original_button_click();
private:
- bool _insensitive;
OriginalItemParam(const OriginalItemParam&);
OriginalItemParam& operator=(const OriginalItemParam&);
};
diff --git a/src/live_effects/parameter/originalitemarray.cpp b/src/live_effects/parameter/originalitemarray.cpp
index 83c237f2e..830d8aa90 100644
--- a/src/live_effects/parameter/originalitemarray.cpp
+++ b/src/live_effects/parameter/originalitemarray.cpp
@@ -444,7 +444,7 @@ gchar * OriginalItemArrayParam::param_getSVGValue() const
gchar * OriginalItemArrayParam::param_getDefaultSVGValue() const
{
- return "";
+ return g_strdup("");
}
void OriginalItemArrayParam::update()