From 35649d3846d690ad444db4645156995baba945ff Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Tue, 14 Jan 2014 23:02:41 +0100 Subject: Fix for Bug #1268778 (Move cursor disappears after clicking on Select Tool (F1) twice). Fixed bugs: - https://launchpad.net/bugs/1268778 (bzr r12931) --- src/desktop.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'src/desktop.cpp') diff --git a/src/desktop.cpp b/src/desktop.cpp index 195127ca1..bc917c6f3 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -657,19 +657,18 @@ 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) { + old_tool->finish(); + delete old_tool; + } + + 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 +676,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); } /** -- cgit v1.2.3 From c31b1410b8b7d9059561e8102a38402a999f4aef Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Wed, 15 Jan 2014 13:21:45 +0100 Subject: Additional fix for Bug #1268778 (Move cursor disappears after clicking on Select Tool (F1) twice). Fixed bugs: - https://launchpad.net/bugs/1268778 (bzr r12932) --- src/desktop.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/desktop.cpp') diff --git a/src/desktop.cpp b/src/desktop.cpp index bc917c6f3..bf3b70d43 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -660,9 +660,16 @@ SPDesktop::change_document (SPDocument *theDocument) void SPDesktop::set_event_context2(const std::string& toolName) { Inkscape::UI::Tools::ToolBase* old_tool = event_context; + if (old_tool) { - old_tool->finish(); - delete 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); -- cgit v1.2.3