summaryrefslogtreecommitdiffstats
path: root/src/knotholder.cpp
diff options
context:
space:
mode:
authorStefano Facchini <stefano.facchini@gmail.com>2017-10-01 13:27:03 +0000
committerStefano Facchini <stefano.facchini@gmail.com>2017-10-01 13:40:38 +0000
commitd4432a4aaf3fb615d9808f53557a4283436bf035 (patch)
tree2a9cc5ae46c673d092abdaba399133659f0cfc27 /src/knotholder.cpp
parentA little styling tweak to a LPE expander (diff)
downloadinkscape-d4432a4aaf3fb615d9808f53557a4283436bf035.tar.gz
inkscape-d4432a4aaf3fb615d9808f53557a4283436bf035.zip
Fix the editing of clipping and masking objects
By passing along an edit_transform matrix, as done for clipping paths. Cleanups: - remove some unused methods - use member initialization
Diffstat (limited to 'src/knotholder.cpp')
-rw-r--r--src/knotholder.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/knotholder.cpp b/src/knotholder.cpp
index 29054bcd9..5fbccf52d 100644
--- a/src/knotholder.cpp
+++ b/src/knotholder.cpp
@@ -56,7 +56,8 @@ KnotHolder::KnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFun
sizeUpdatedConn(),
released(relhandler),
local_change(FALSE),
- dragging(false)
+ dragging(false),
+ _edit_transform(Geom::identity())
{
if (!desktop || !item) {
g_print ("Error! Throw an exception, please!\n");
@@ -79,6 +80,12 @@ KnotHolder::~KnotHolder() {
sizeUpdatedConn.disconnect();
}
+void
+KnotHolder::setEditTransform(Geom::Affine edit_transform)
+{
+ _edit_transform = edit_transform;
+}
+
void KnotHolder::updateControlSizes()
{
ControlManager &mgr = ControlManager::getManager();
@@ -230,8 +237,8 @@ KnotHolder::knot_moved_handler(SPKnot *knot, Geom::Point const &p, guint state)
for(std::list<KnotHolderEntity *>::iterator i = this->entity.begin(); i != this->entity.end(); ++i) {
KnotHolderEntity *e = *i;
if (e->knot == knot) {
- Geom::Point const q = p * item->i2dt_affine().inverse();
- e->knot_set(q, e->knot->drag_origin * item->i2dt_affine().inverse(), state);
+ Geom::Point const q = p * item->i2dt_affine().inverse() * _edit_transform.inverse();
+ e->knot_set(q, e->knot->drag_origin * item->i2dt_affine().inverse() * _edit_transform.inverse(), state);
break;
}
}