summaryrefslogtreecommitdiffstats
path: root/src
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
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')
-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
-rw-r--r--src/widgets/toolbox.cpp6
4 files changed, 15 insertions, 8 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:
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index f81702f4f..8b12a7a5e 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -1043,7 +1043,8 @@ sp_node_path_edit_delete(void)
{
InkNodeTool *nt = get_node_tool();
if (nt) {
- nt->_multipath->deleteNodes();
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ nt->_multipath->deleteNodes(prefs->getBool("/tools/nodes/delete_preserves_shape", true));
}
}
@@ -7645,8 +7646,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act), ( tbuttonstate ? TRUE : FALSE ));
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_directed_graph_layout_toggled), holder );
- sigc::connection *connection = new sigc::connection(sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_connector_toolbox_selection_changed), (GObject *)holder))
- );
+ sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_connector_toolbox_selection_changed), (GObject *)holder));
}
// Avoid overlaps toggle button