summaryrefslogtreecommitdiffstats
path: root/src/knot.cpp
diff options
context:
space:
mode:
authorKris De Gussem <kris.degussem@gmail.com>2012-07-12 22:10:43 +0000
committerKris <Kris.De.Gussem@hotmail.com>2012-07-12 22:10:43 +0000
commitdd870f605bac1a4c16611969ea8e57021b99887b (patch)
tree184528ee762119634ac580b42d0b9a64de7089fd /src/knot.cpp
parentTranslations. Fix for Bug #425202 (Script messages not translated). (diff)
downloadinkscape-dd870f605bac1a4c16611969ea8e57021b99887b.tar.gz
inkscape-dd870f605bac1a4c16611969ea8e57021b99887b.zip
Bug #781893 (Crash after moving a Bezier node after Knot path effect)
Although issue not solved, prevent Inkscape from crashing. Add some code to make code more robust. (bzr r11547)
Diffstat (limited to 'src/knot.cpp')
-rw-r--r--src/knot.cpp40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/knot.cpp b/src/knot.cpp
index ad8bca2b9..afcd70eb5 100644
--- a/src/knot.cpp
+++ b/src/knot.cpp
@@ -32,9 +32,9 @@
using Inkscape::DocumentUndo;
#define KNOT_EVENT_MASK (GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | \
- GDK_POINTER_MOTION_MASK | \
- GDK_POINTER_MOTION_HINT_MASK | \
- GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK)
+ GDK_POINTER_MOTION_MASK | \
+ GDK_POINTER_MOTION_HINT_MASK | \
+ GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK)
static bool nograb = false;
@@ -75,13 +75,13 @@ GType sp_knot_get_type()
if (!type) {
GTypeInfo info = {
sizeof(SPKnotClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
+ NULL, /* base_init */
+ NULL, /* base_finalize */
(GClassInitFunc) sp_knot_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
sizeof (SPKnot),
- 16, /* n_preallocs */
+ 16, /* n_preallocs */
(GInstanceInitFunc) sp_knot_init,
NULL
};
@@ -138,13 +138,13 @@ static void sp_knot_class_init(SPKnotClass *klass)
G_TYPE_UINT);
knot_signals[UNGRABBED] = g_signal_new("ungrabbed",
- G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET(SPKnotClass, ungrabbed),
- NULL, NULL,
- g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE, 1,
- G_TYPE_UINT);
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SPKnotClass, ungrabbed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
knot_signals[MOVED] = g_signal_new("moved",
G_TYPE_FROM_CLASS(klass),
@@ -323,14 +323,14 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
}
break;
case GDK_BUTTON_PRESS:
- if (event->button.button == 1 && !knot->desktop->event_context->space_panning) {
+ if ((event->button.button == 1) && knot->desktop && knot->desktop->event_context && !knot->desktop->event_context->space_panning) {
Geom::Point const p = knot->desktop->w2d(Geom::Point(event->button.x, event->button.y));
sp_knot_start_dragging(knot, p, (gint) event->button.x, (gint) event->button.y, event->button.time);
consumed = TRUE;
}
break;
case GDK_BUTTON_RELEASE:
- if (event->button.button == 1 && !knot->desktop->event_context->space_panning) {
+ if (event->button.button == 1 && knot->desktop && knot->desktop->event_context && !knot->desktop->event_context->space_panning) {
// If we have any pending snap event, then invoke it now
if (knot->desktop->event_context->_delayed_snap_event) {
sp_event_context_snap_watchdog_callback(knot->desktop->event_context->_delayed_snap_event);
@@ -368,7 +368,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
}
break;
case GDK_MOTION_NOTIFY:
- if (grabbed && !knot->desktop->event_context->space_panning) {
+ if (grabbed && knot->desktop && knot->desktop->event_context && !knot->desktop->event_context->space_panning) {
consumed = TRUE;
if ( within_tolerance
@@ -404,7 +404,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
sp_knot_set_flag(knot, SP_KNOT_MOUSEOVER, TRUE);
sp_knot_set_flag(knot, SP_KNOT_GRABBED, FALSE);
- if (knot->tip) {
+ if (knot->tip && knot->desktop && knot->desktop->event_context) {
knot->desktop->event_context->defaultMessageContext()->set(Inkscape::NORMAL_MESSAGE, knot->tip);
}
@@ -416,7 +416,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
sp_knot_set_flag(knot, SP_KNOT_MOUSEOVER, FALSE);
sp_knot_set_flag(knot, SP_KNOT_GRABBED, FALSE);
- if (knot->tip) {
+ if (knot->tip && knot->desktop && knot->desktop->event_context) {
knot->desktop->event_context->defaultMessageContext()->clear();
}