summaryrefslogtreecommitdiffstats
path: root/src/knot.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/knot.cpp')
-rw-r--r--src/knot.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/knot.cpp b/src/knot.cpp
index 61d0dff39..4118873c1 100644
--- a/src/knot.cpp
+++ b/src/knot.cpp
@@ -21,12 +21,16 @@
#include "desktop.h"
#include "desktop-handles.h"
#include "knot.h"
+#include "knot-ptr.h"
#include "document.h"
#include "document-undo.h"
#include "preferences.h"
#include "message-stack.h"
#include "message-context.h"
+#include "ui/tools-switch.h"
#include "ui/tools/tool-base.h"
+#include "ui/tools/node-tool.h"
+#include <gtk/gtk.h>
using Inkscape::DocumentUndo;
@@ -118,6 +122,7 @@ SPKnot::SPKnot(SPDesktop *desktop, gchar const *tip)
this->_event_handler_id = g_signal_connect(G_OBJECT(this->item), "event",
G_CALLBACK(sp_knot_handler), this);
+ knot_created_callback(this);
}
SPKnot::~SPKnot() {
@@ -162,6 +167,10 @@ SPKnot::~SPKnot() {
g_free(this->tip);
this->tip = NULL;
}
+
+ // FIXME: cannot snap to destroyed knot (lp:1309050)
+ //sp_event_context_discard_delayed_snap_event(this->desktop->event_context);
+ knot_deleted_callback(this);
}
void SPKnot::startDragging(Geom::Point const &p, gint x, gint y, guint32 etime) {
@@ -254,6 +263,10 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
consumed = TRUE;
}
}
+ if (tools_isactive(knot->desktop, TOOLS_NODES)) {
+ Inkscape::UI::Tools::NodeTool *nt = static_cast<Inkscape::UI::Tools::NodeTool*>(knot->desktop->event_context);
+ nt->update_helperpath();
+ }
break;
case GDK_MOTION_NOTIFY:
if (grabbed && knot->desktop && knot->desktop->event_context && !knot->desktop->event_context->space_panning) {
@@ -282,10 +295,14 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
knot->setFlag(SP_KNOT_DRAGGING, TRUE);
}
- sp_event_context_snap_delay_handler(knot->desktop->event_context, NULL, (gpointer) knot, (GdkEventMotion *)event, Inkscape::UI::Tools::DelayedSnapEvent::KNOT_HANDLER);
+ sp_event_context_snap_delay_handler(knot->desktop->event_context, NULL, knot, (GdkEventMotion *)event, Inkscape::UI::Tools::DelayedSnapEvent::KNOT_HANDLER);
sp_knot_handler_request_position(event, knot);
moved = TRUE;
}
+ if (tools_isactive(knot->desktop, TOOLS_NODES)) {
+ Inkscape::UI::Tools::NodeTool *nt = static_cast<Inkscape::UI::Tools::NodeTool*>(knot->desktop->event_context);
+ nt->update_helperpath();
+ }
break;
case GDK_ENTER_NOTIFY:
knot->setFlag(SP_KNOT_MOUSEOVER, TRUE);