summaryrefslogtreecommitdiffstats
path: root/src/desktop.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2014-01-18 09:11:04 +0000
committerJabiertxof <jtx@jtx.marker.es>2014-01-18 09:11:04 +0000
commitf12d6a57fe5cc18be5afd164061578d8e00d75ce (patch)
tree7fd1a501a8a545fbf2326ead48cd041928699c5e /src/desktop.cpp
parentupdate to trunk (diff)
parentFix missing embeded image condition, kindly caught by suv in bug #1270334 (diff)
downloadinkscape-f12d6a57fe5cc18be5afd164061578d8e00d75ce.tar.gz
inkscape-f12d6a57fe5cc18be5afd164061578d8e00d75ce.zip
update to trunk
(bzr r11950.1.235)
Diffstat (limited to 'src/desktop.cpp')
-rw-r--r--src/desktop.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 195127ca1..bf3b70d43 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -657,19 +657,25 @@ SPDesktop::change_document (SPDocument *theDocument)
/**
* Replaces the currently active tool with a new one.
*/
-void SPDesktop::set_event_context2(const std::string& toolName) {
- Inkscape::UI::Tools::ToolBase* new_tool = ToolFactory::instance().createObject(toolName);
- new_tool->desktop = this;
- new_tool->message_context = new Inkscape::MessageContext(this->messageStack());
-
+void SPDesktop::set_event_context2(const std::string& toolName)
+{
Inkscape::UI::Tools::ToolBase* old_tool = event_context;
- event_context = new_tool;
-
- if (old_tool) {
- old_tool->finish();
- delete old_tool;
- }
+ if (old_tool) {
+ if (toolName.compare(old_tool->pref_observer->observed_path) != 0) {
+ //g_message("Old tool: %s", old_tool->pref_observer->observed_path.c_str());
+ //g_message("New tool: %s", toolName.c_str());
+ old_tool->finish();
+ delete old_tool;
+ } else {
+ return;
+ }
+ }
+
+ Inkscape::UI::Tools::ToolBase* new_tool = ToolFactory::instance().createObject(toolName);
+ new_tool->desktop = this;
+ new_tool->message_context = new Inkscape::MessageContext(this->messageStack());
+ event_context = new_tool;
new_tool->setup();
// Make sure no delayed snapping events are carried over after switching tools
@@ -677,7 +683,7 @@ void SPDesktop::set_event_context2(const std::string& toolName) {
// tool should take care of this by itself)
sp_event_context_discard_delayed_snap_event(event_context);
- _event_context_changed_signal.emit(this, event_context);
+ _event_context_changed_signal.emit(this, event_context);
}
/**