diff options
| author | Diederik van Lierop <mailat-signdiedenrezidotnl> | 2010-08-28 08:09:45 +0000 |
|---|---|---|
| committer | Diederik van Lierop <mailat-signdiedenrezidotnl> | 2010-08-28 08:09:45 +0000 |
| commit | b11930319d8af5dafda710ff8f4184083adf89fa (patch) | |
| tree | 240c06e17a09cf7e262bce6713cdbe86436d0cba /src/event-context.cpp | |
| parent | Extensions. Fix live preview crash in custom color extension when invalid val... (diff) | |
| download | inkscape-b11930319d8af5dafda710ff8f4184083adf89fa.tar.gz inkscape-b11930319d8af5dafda710ff8f4184083adf89fa.zip | |
Fix LP bug #622350: Discard events when desktop->event_context has not been set, instead of crashing.
(bzr r9728)
Diffstat (limited to 'src/event-context.cpp')
| -rw-r--r-- | src/event-context.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/event-context.cpp b/src/event-context.cpp index 6184fb4c7..5d60379c8 100644 --- a/src/event-context.cpp +++ b/src/event-context.cpp @@ -937,8 +937,12 @@ gint sp_event_context_root_handler(SPEventContext * event_context, } gint sp_event_context_virtual_root_handler(SPEventContext * event_context, GdkEvent * event) { - gint ret = ((SPEventContextClass *) G_OBJECT_GET_CLASS(event_context))->root_handler(event_context, event); - set_event_location(event_context->desktop, event); + gint ret = false; + if (event_context) { // If no event-context is available then do nothing, otherwise Inkscape would crash + // (see the comment in SPDesktop::set_event_context, and bug LP #622350) + ret = ((SPEventContextClass *) G_OBJECT_GET_CLASS(event_context))->root_handler(event_context, event); + set_event_location(event_context->desktop, event); + } return ret; } @@ -972,12 +976,15 @@ gint sp_event_context_item_handler(SPEventContext * event_context, } gint sp_event_context_virtual_item_handler(SPEventContext * event_context, SPItem * item, GdkEvent * event) { - gint ret = ((SPEventContextClass *) G_OBJECT_GET_CLASS(event_context))->item_handler(event_context, item, event); - - if (!ret) { - ret = sp_event_context_virtual_root_handler(event_context, event); - } else { - set_event_location(event_context->desktop, event); + gint ret = false; + if (event_context) { // If no event-context is available then do nothing, otherwise Inkscape would crash + // (see the comment in SPDesktop::set_event_context, and bug LP #622350) + ret = ((SPEventContextClass *) G_OBJECT_GET_CLASS(event_context))->item_handler(event_context, item, event); + if (!ret) { + ret = sp_event_context_virtual_root_handler(event_context, event); + } else { + set_event_location(event_context->desktop, event); + } } return ret; |
