summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-11-06 23:09:40 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2010-11-06 23:09:40 +0000
commitc8c9ae21902c8603dd80be90d0b3b7851eef816d (patch)
treeffa0d5062bb5a85cefadd0af498faf6665a5e727 /src
parentDisable i18n of palettes for now - it breaks builds where srcdir != builddir (diff)
downloadinkscape-c8c9ae21902c8603dd80be90d0b3b7851eef816d.tar.gz
inkscape-c8c9ae21902c8603dd80be90d0b3b7851eef816d.zip
Reintroduce Shift+L shortcut and handle retraction when setting the type
of already cusp nodes to cusp in the node tool (bzr r9875)
Diffstat (limited to 'src')
-rw-r--r--src/ui/tool/multi-path-manipulator.cpp29
-rw-r--r--src/ui/tool/node.cpp9
2 files changed, 28 insertions, 10 deletions
diff --git a/src/ui/tool/multi-path-manipulator.cpp b/src/ui/tool/multi-path-manipulator.cpp
index 6101a3556..a1b398bb1 100644
--- a/src/ui/tool/multi-path-manipulator.cpp
+++ b/src/ui/tool/multi-path-manipulator.cpp
@@ -220,11 +220,29 @@ void MultiPathManipulator::invertSelectionInSubpaths()
void MultiPathManipulator::setNodeType(NodeType type)
{
if (_selection.empty()) return;
+
+ // When all selected nodes are already cusp, retract their handles
+ bool retract_handles = (type == NODE_CUSP);
+
for (ControlPointSelection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
Node *node = dynamic_cast<Node*>(*i);
- if (node) node->setType(type);
+ if (node) {
+ retract_handles &= (node->type() == NODE_CUSP);
+ node->setType(type);
+ }
}
- _done(_("Change node type"));
+
+ if (retract_handles) {
+ for (ControlPointSelection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
+ Node *node = dynamic_cast<Node*>(*i);
+ if (node) {
+ node->front()->retract();
+ node->back()->retract();
+ }
+ }
+ }
+
+ _done(retract_handles ? _("Retract handles") : _("Change node type"));
}
void MultiPathManipulator::setSegmentType(SegmentType type)
@@ -603,6 +621,13 @@ bool MultiPathManipulator::event(GdkEvent *event)
return true;
}
break;
+ case GDK_l:
+ case GDK_L:
+ if (held_only_shift(event->key)) {
+ // Shift+L - make segments linear
+ setSegmentType(SEGMENT_LINEAR);
+ return true;
+ }
default:
break;
}
diff --git a/src/ui/tool/node.cpp b/src/ui/tool/node.cpp
index 399fa5292..60b5812c6 100644
--- a/src/ui/tool/node.cpp
+++ b/src/ui/tool/node.cpp
@@ -568,14 +568,7 @@ void Node::setType(NodeType type, bool update_handles)
if (update_handles) {
switch (type) {
case NODE_CUSP:
- // if the existing type is also NODE_CUSP, retract handles
- // NOTE: This misfeature is very annoying when you have both cusp and smooth
- // nodes in a selection, so I have removed it. Use segment commands
- // or Ctrl+click to retract handles.
- //if (_type == NODE_CUSP) {
- // _front.retract();
- // _back.retract();
- //}
+ // nothing to do
break;
case NODE_AUTO:
// auto handles make no sense for endnodes