summaryrefslogtreecommitdiffstats
path: root/src/ui/tools/tool-base.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2014-03-01 22:16:20 +0000
committerJabiertxof <jtx@jtx.marker.es>2014-03-01 22:16:20 +0000
commitc4a09144149f9a435c271e133ab19546680c273e (patch)
tree0ed4007da8302d14f7d4a91c53794f5715d41c8d /src/ui/tools/tool-base.cpp
parentupdate to trunk (diff)
parentFix for crash when cycle-selecting. (diff)
downloadinkscape-c4a09144149f9a435c271e133ab19546680c273e.tar.gz
inkscape-c4a09144149f9a435c271e133ab19546680c273e.zip
update to trunk
(bzr r11950.1.263)
Diffstat (limited to 'src/ui/tools/tool-base.cpp')
-rw-r--r--src/ui/tools/tool-base.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp
index dc10e9388..99b72c386 100644
--- a/src/ui/tools/tool-base.cpp
+++ b/src/ui/tools/tool-base.cpp
@@ -739,10 +739,12 @@ bool ToolBase::root_handler(GdkEvent* event) {
if (within_tolerance == true) {
// Space was pressed, but not panned
sp_toggle_selector(desktop);
- ret = TRUE;
+
+ // Be careful, sp_toggle_selector will delete ourselves.
+ // Thus, make sure we return immediately.
+ return true;
}
- within_tolerance = false;
break;
case GDK_KEY_Q:
@@ -975,10 +977,18 @@ gint sp_event_context_root_handler(ToolBase * event_context,
gint sp_event_context_virtual_root_handler(ToolBase * event_context, GdkEvent * event) {
gint ret = false;
+
if (event_context) {
- ret = event_context->root_handler(event);
- set_event_location(event_context->desktop, event);
+ // The root handler also handles pressing the space key.
+ // This will toggle the current tool and delete the current one.
+ // Thus, save a pointer to the desktop before calling it.
+ SPDesktop* desktop = event_context->desktop;
+
+ ret = event_context->root_handler(event);
+
+ set_event_location(desktop, event);
}
+
return ret;
}