summaryrefslogtreecommitdiffstats
path: root/src/ui/tool/path-manipulator.cpp
diff options
context:
space:
mode:
authorroot <root@jtx.marker.es>2013-04-07 22:50:31 +0000
committerroot <root@jtx.marker.es>2013-04-07 22:50:31 +0000
commit30858428c74d1fa0f119f40b99fa5e51836d8599 (patch)
tree62190b9e91a164a3df6a69817012260e02f96838 /src/ui/tool/path-manipulator.cpp
parentUpdate to trunk (diff)
downloadinkscape-30858428c74d1fa0f119f40b99fa5e51836d8599.tar.gz
inkscape-30858428c74d1fa0f119f40b99fa5e51836d8599.zip
Change width only for selected nodes by widget
(bzr r11950.1.83)
Diffstat (limited to 'src/ui/tool/path-manipulator.cpp')
-rw-r--r--src/ui/tool/path-manipulator.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/ui/tool/path-manipulator.cpp b/src/ui/tool/path-manipulator.cpp
index be5514e1f..6cad60fee 100644
--- a/src/ui/tool/path-manipulator.cpp
+++ b/src/ui/tool/path-manipulator.cpp
@@ -1248,8 +1248,22 @@ Geom::Point PathManipulator::BSplineHandleReposition(Handle *h,double pos){
}
void PathManipulator::BSplineNodeHandlesReposition(Node *n){
- n->front()->setPosition(BSplineHandleReposition(n->front(),n->bsplineWeight));
- n->back()->setPosition(BSplineHandleReposition(n->back(),n->bsplineWeight));
+ if(n->selected()){
+ Node * nextNode = n->nodeToward(n->front());
+ Node * prevNode = n->nodeToward(n->back());
+ double prevPos = 0;
+ double nextPos = 0;
+ if(prevNode)
+ prevPos = BSplineHandlePosition(prevNode->front());
+ if(nextNode)
+ nextPos = BSplineHandlePosition(nextNode->back());
+ n->front()->setPosition(BSplineHandleReposition(n->front(),n->bsplineWeight));
+ n->back()->setPosition(BSplineHandleReposition(n->back(),n->bsplineWeight));
+ if(prevNode)
+ prevNode->front()->setPosition(BSplineHandleReposition(prevNode->front(),prevPos));
+ if(nextNode)
+ nextNode->back()->setPosition(BSplineHandleReposition(nextNode->back(),nextPos));
+ }
}
/** Construct the geometric representation of nodes and handles, update the outline