summaryrefslogtreecommitdiffstats
path: root/src/ui/tools/node-tool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/tools/node-tool.cpp')
-rw-r--r--src/ui/tools/node-tool.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/ui/tools/node-tool.cpp b/src/ui/tools/node-tool.cpp
index f7f09610c..99c98476f 100644
--- a/src/ui/tools/node-tool.cpp
+++ b/src/ui/tools/node-tool.cpp
@@ -158,6 +158,9 @@ NodeTool::~NodeTool() {
if (this->helperpath_tmpitem) {
this->desktop->remove_temporary_canvasitem(this->helperpath_tmpitem);
}
+ if (this->helperpath_tmpitem_highlight) {
+ this->desktop->remove_temporary_canvasitem(this->helperpath_tmpitem_highlight);
+ }
this->_selection_changed_connection.disconnect();
//this->_selection_modified_connection.disconnect();
this->_mouseover_changed_connection.disconnect();
@@ -238,13 +241,13 @@ void NodeTool::setup() {
);
this->helperpath_tmpitem = NULL;
+ this->helperpath_tmpitem_highlight = NULL;
this->cursor_drag = false;
this->show_transform_handles = true;
this->single_node_transform_handles = false;
this->flash_tempitem = NULL;
this->flashed_item = NULL;
this->_last_over = NULL;
- this->helperpath_tmpitem = NULL;
// read prefs before adding items to selection to prevent momentarily showing the outline
sp_event_context_read(this, "show_handles");
@@ -271,7 +274,7 @@ void NodeTool::setup() {
}
this->desktop->emitToolSubselectionChanged(NULL); // sets the coord entry fields to inactive
- this->update_helperpath();
+ update_helperpath();
}
// show helper paths of the applied LPE, if any
@@ -282,6 +285,10 @@ void NodeTool::update_helperpath () {
this->desktop->remove_temporary_canvasitem(this->helperpath_tmpitem);
this->helperpath_tmpitem = NULL;
}
+ if (this->helperpath_tmpitem_highlight) {
+ this->desktop->remove_temporary_canvasitem(this->helperpath_tmpitem_highlight);
+ this->helperpath_tmpitem_highlight = NULL;
+ }
if (SP_IS_LPE_ITEM(selection->singleItem())) {
Inkscape::LivePathEffect::Effect *lpe = SP_LPE_ITEM(selection->singleItem())->getCurrentLPE();
@@ -305,6 +312,11 @@ void NodeTool::update_helperpath () {
cc->reset();
}
if (!c->is_empty()) {
+ SPCanvasItem *helperpath_highlight = sp_canvas_bpath_new(this->desktop->getTempGroup(), c);
+ sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(helperpath_highlight), 0xffffff9A, 2.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT);
+ sp_canvas_bpath_set_fill(SP_CANVAS_BPATH(helperpath_highlight), 0, SP_WIND_RULE_NONZERO);
+ sp_canvas_item_affine_absolute(helperpath_highlight, selection->singleItem()->i2dt_affine());
+ this->helperpath_tmpitem_highlight = this->desktop->add_temporary_canvasitem(helperpath_highlight, 0);
SPCanvasItem *helperpath = sp_canvas_bpath_new(this->desktop->getTempGroup(), c);
sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(helperpath), 0x0000ff9A, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT);
sp_canvas_bpath_set_fill(SP_CANVAS_BPATH(helperpath), 0, SP_WIND_RULE_NONZERO);
@@ -468,13 +480,10 @@ bool NodeTool::root_handler(GdkEvent* event) {
if (this->_selected_nodes->event(this, event)) {
return true;
}
-
switch (event->type)
{
case GDK_MOTION_NOTIFY: {
- this->update_helperpath();
combine_motion_events(desktop->canvas, event->motion, 0);
- this->update_helperpath();
SPItem *over_item = sp_event_context_find_item (desktop, event_point(event->button),
FALSE, TRUE);
@@ -629,7 +638,6 @@ bool NodeTool::root_handler(GdkEvent* event) {
void NodeTool::update_tip(GdkEvent *event) {
using namespace Inkscape::UI;
-
if (event && (event->type == GDK_KEY_PRESS || event->type == GDK_KEY_RELEASE)) {
unsigned new_state = state_after_event(event);