summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-03-02 23:22:31 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2010-03-02 23:22:31 +0000
commit669ba0151fefdfd7ed0d5dd54978698587b1e309 (patch)
treed08c8be955de4b0834dc61b4cdd163e96cebcbb9 /src/ui
parentUse Boost unordeed containers instead of TR1 to minimize pain (diff)
downloadinkscape-669ba0151fefdfd7ed0d5dd54978698587b1e309.tar.gz
inkscape-669ba0151fefdfd7ed0d5dd54978698587b1e309.zip
Implement a preference that determines whether deleting nodes
preserves the shape (bzr r9130)
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp6
-rw-r--r--src/ui/dialog/inkscape-preferences.h1
-rw-r--r--src/ui/tool/multi-path-manipulator.cpp10
3 files changed, 12 insertions, 5 deletions
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 82bca9da0..40efc8282 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -433,7 +433,7 @@ void InkscapePreferences::initPageTools()
this->AddPage(_page_node, _("Node"), iter_tools, PREFS_PAGE_TOOLS_NODE);
AddSelcueCheckbox(_page_node, "/tools/nodes", true);
AddGradientCheckbox(_page_node, "/tools/nodes", true);
- _page_node.add_group_header( _("Path outline:"));
+ _page_node.add_group_header( _("Path outline"));
_t_node_pathoutline_color.init(_("Path outline color"), "/tools/nodes/highlight_color", 0xff0000ff);
_page_node.add_line( false, "", _t_node_pathoutline_color, "", _("Selects the color used for showing the path outline."), false);
_t_node_show_outline.init(_("Always show outline"), "/tools/nodes/show_outline", false);
@@ -450,9 +450,11 @@ void InkscapePreferences::initPageTools()
_page_node.add_line( true, "", _t_node_pathflash_selected, "", _("Show temporary outline even when a path is selected for editing"));
_t_node_pathflash_timeout.init("/tools/nodes/pathflash_timeout", 0, 10000.0, 100.0, 100.0, 1000.0, true, false);
_page_node.add_line( false, _("Flash time"), _t_node_pathflash_timeout, "ms", _("Specifies how long the path outline will be visible after a mouse-over (in milliseconds). Specify 0 to have the outline shown until mouse leaves the path."), false);
- _page_node.add_group_header(_("Transform Handles:"));
+ _page_node.add_group_header(_("Editing preferences"));
_t_node_single_node_transform_handles.init(_("Show transform handles for single nodes"), "/tools/nodes/single_node_transform_handles", false);
_page_node.add_line( true, "", _t_node_single_node_transform_handles, "", _("Show transform handles even when only a single node is selected."));
+ _t_node_delete_preserves_shape.init(_("Deleting nodes preserves shape"), "/tools/nodes/delete_preserves_shape", true);
+ _page_node.add_line( true, "", _t_node_delete_preserves_shape, "", _("Move handles next to deleted nodes to resemble original shape. Hold Ctrl to get the other behavior."));
//Tweak
this->AddPage(_page_tweak, _("Tweak"), iter_tools, PREFS_PAGE_TOOLS_TWEAK);
diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h
index e3f76b753..0ba8c965d 100644
--- a/src/ui/dialog/inkscape-preferences.h
+++ b/src/ui/dialog/inkscape-preferences.h
@@ -149,6 +149,7 @@ protected:
PrefSpinButton _t_node_pathflash_timeout;
PrefCheckButton _t_node_show_path_direction;
PrefCheckButton _t_node_single_node_transform_handles;
+ PrefCheckButton _t_node_delete_preserves_shape;
PrefColorPicker _t_node_pathoutline_color;
PrefRadioButton _win_dockable, _win_floating;
diff --git a/src/ui/tool/multi-path-manipulator.cpp b/src/ui/tool/multi-path-manipulator.cpp
index f5646ac36..3b0852e6e 100644
--- a/src/ui/tool/multi-path-manipulator.cpp
+++ b/src/ui/tool/multi-path-manipulator.cpp
@@ -466,9 +466,13 @@ bool MultiPathManipulator::event(GdkEvent *event)
// Alt+Delete - delete segments
deleteSegments();
} else {
- // Control+Delete - delete nodes
- // Delete - delete nodes preserving shape
- deleteNodes(!held_control(event->key));
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ bool del_preserves_shape = prefs->getBool("/tools/nodes/delete_preserves_shape", true);
+ // pass keep_shape = true when:
+ // a) del preserves shape, and control is not pressed
+ // b) ctrl+del preserves shape (del_preserves_shape is false), and control is pressed
+ // Hence xor
+ deleteNodes(del_preserves_shape ^ held_control(event->key));
}
return true;
case GDK_c: