From: buliabyak Date: Thu, 8 Jan 2009 05:34:40 +0000 (+0000) Subject: move shape_editor from node context to the parent class, event context X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=c647aff4da60b280974a1d5eceda738b5a0ab389;p=inkscape.git move shape_editor from node context to the parent class, event context --- diff --git a/src/desktop.cpp b/src/desktop.cpp index 85c53be6f..8b60291ef 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -883,9 +883,8 @@ SPDesktop::zoom_quick (bool enable) if (!zoomed) { SPItem * singleItem = selection->singleItem(); if (singleItem != NULL && tools_isactive(this, TOOLS_NODES)) { - SPNodeContext * ncontext = SP_NODE_CONTEXT(event_context); - Inkscape::NodePath::Path * nodepath = ncontext->shape_editor->get_nodepath(); + Inkscape::NodePath::Path * nodepath = event_context->shape_editor->get_nodepath(); // printf("I've got a nodepath, crazy\n"); Geom::Rect nodes; diff --git a/src/event-context.cpp b/src/event-context.cpp index 963bf2d7e..7039c3b13 100644 --- a/src/event-context.cpp +++ b/src/event-context.cpp @@ -141,6 +141,7 @@ sp_event_context_init(SPEventContext *event_context) event_context->_selcue = NULL; event_context->_grdrag = NULL; event_context->space_panning = false; + event_context->shape_editor = NULL; } /** @@ -1058,48 +1059,9 @@ sp_event_context_over_item (SPDesktop *desktop, SPItem *item, Geom::Point const ShapeEditor * sp_event_context_get_shape_editor (SPEventContext *ec) { - if (SP_IS_NODE_CONTEXT(ec)) { - return SP_NODE_CONTEXT(ec)->shape_editor; - } else if (SP_IS_LPETOOL_CONTEXT(ec)) { - return SP_LPETOOL_CONTEXT(ec)->shape_editor; - } else { - g_warning("ShapeEditor only exists in Node and Geometric Tool."); - return NULL; - } -} - -/** - * Called when SPEventContext subclass node attribute changed. - */ -void -ec_shape_event_attr_changed(Inkscape::XML::Node */*shape_repr*/, gchar const *name, - gchar const */*old_value*/, gchar const */*new_value*/, - bool const /*is_interactive*/, gpointer const data) -{ - if (!name - || !strcmp(name, "style") - || SP_ATTRIBUTE_IS_CSS(sp_attribute_lookup(name))) { - // no need to regenrate knotholder if only style changed - return; - } - - SPEventContext *ec = SP_EVENT_CONTEXT(data); - - if (ec->shape_knot_holder) { - delete ec->shape_knot_holder; - } - ec->shape_knot_holder = NULL; - - SPDesktop *desktop = ec->desktop; - - SPItem *item = sp_desktop_selection(desktop)->singleItem(); - - if (item) { - ec->shape_knot_holder = sp_item_knot_holder(item, desktop); - } + return ec->shape_editor; } - void event_context_print_event_info(GdkEvent *event, bool print_return) { switch (event->type) { diff --git a/src/event-context.h b/src/event-context.h index 9b464b7fa..37b0ea75b 100644 --- a/src/event-context.h +++ b/src/event-context.h @@ -72,8 +72,7 @@ struct SPEventContext : public GObject { GrDrag *_grdrag; GrDrag *get_drag () {return _grdrag;} - KnotHolder *shape_knot_holder; - Inkscape::XML::Node *shape_repr; + ShapeEditor* shape_editor; bool space_panning; }; diff --git a/src/live_effects/parameter/path.cpp b/src/live_effects/parameter/path.cpp index 78ebca384..1214a1766 100644 --- a/src/live_effects/parameter/path.cpp +++ b/src/live_effects/parameter/path.cpp @@ -200,7 +200,7 @@ PathParam::param_editOncanvas(SPItem * item, SPDesktop * dt) tools_switch(dt, TOOLS_NODES); } - ShapeEditor * shape_editor = SP_NODE_CONTEXT( dt->event_context )->shape_editor; + ShapeEditor * shape_editor = dt->event_context->shape_editor; if (!href) { shape_editor->set_item_lpe_path_parameter(item, SP_OBJECT(param_effect->getLPEObj()), param_key.c_str()); } else { diff --git a/src/node-context.cpp b/src/node-context.cpp index 3f241850e..ec86a4c80 100644 --- a/src/node-context.cpp +++ b/src/node-context.cpp @@ -121,7 +121,7 @@ sp_node_context_dispose(GObject *object) nc->sel_changed_connection.disconnect(); nc->sel_changed_connection.~connection(); - delete nc->shape_editor; + delete ec->shape_editor; if (nc->_node_message_context) { delete nc->_node_message_context; @@ -145,7 +145,7 @@ sp_node_context_setup(SPEventContext *ec) SPItem *item = selection->singleItem(); - nc->shape_editor = new ShapeEditor(ec->desktop); + ec->shape_editor = new ShapeEditor(ec->desktop); nc->rb_escaped = false; @@ -156,8 +156,8 @@ sp_node_context_setup(SPEventContext *ec) nc->current_state = SP_NODE_CONTEXT_INACTIVE; if (item) { - nc->shape_editor->set_item(item, SH_NODEPATH); - nc->shape_editor->set_item(item, SH_KNOTHOLDER); + ec->shape_editor->set_item(item, SH_NODEPATH); + ec->shape_editor->set_item(item, SH_KNOTHOLDER); } Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -172,7 +172,7 @@ sp_node_context_setup(SPEventContext *ec) nc->_node_message_context = new Inkscape::MessageContext((ec->desktop)->messageStack()); - nc->shape_editor->update_statusbar(); + ec->shape_editor->update_statusbar(); } static void @@ -209,15 +209,15 @@ destroys old and creates new nodepath and reassigns listeners to the new selecte void sp_node_context_selection_changed(Inkscape::Selection *selection, gpointer data) { - SPNodeContext *nc = SP_NODE_CONTEXT(data); + SPEventContext *ec = SP_EVENT_CONTEXT(data); // TODO: update ShapeEditorsCollective instead - nc->shape_editor->unset_item(SH_NODEPATH); - nc->shape_editor->unset_item(SH_KNOTHOLDER); + ec->shape_editor->unset_item(SH_NODEPATH); + ec->shape_editor->unset_item(SH_KNOTHOLDER); SPItem *item = selection->singleItem(); - nc->shape_editor->set_item(item, SH_NODEPATH); - nc->shape_editor->set_item(item, SH_KNOTHOLDER); - nc->shape_editor->update_statusbar(); + ec->shape_editor->set_item(item, SH_NODEPATH); + ec->shape_editor->set_item(item, SH_KNOTHOLDER); + ec->shape_editor->update_statusbar(); } void @@ -260,6 +260,7 @@ static gint sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) { SPDesktop *desktop = event_context->desktop; + ShapeEditor* se = event_context->shape_editor; Inkscape::Selection *selection = sp_desktop_selection (desktop); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -285,13 +286,13 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) event_context->xp = (gint) event->button.x; event_context->yp = (gint) event->button.y; event_context->within_tolerance = true; - nc->shape_editor->cancel_hit(); + se->cancel_hit(); if (!(event->button.state & GDK_SHIFT_MASK)) { if (!nc->drag) { - if (nc->shape_editor->has_nodepath() && selection->single() /* && item_over */) { + if (se->has_nodepath() && selection->single() /* && item_over */) { // save drag origin - bool over_stroke = nc->shape_editor->is_over_stroke(Geom::Point(event->button.x, event->button.y), true); + bool over_stroke = se->is_over_stroke(Geom::Point(event->button.x, event->button.y), true); //only dragging curves if (over_stroke) { ret = TRUE; @@ -321,7 +322,7 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) // The path went away while dragging; throw away any further motion // events until the mouse pointer is released. - if (nc->shape_editor->hits_curve() && !nc->shape_editor->has_nodepath()) { + if (se->hits_curve() && !se->has_nodepath()) { break; } @@ -334,7 +335,7 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) // selection rubberband), make sure we continue to perform that operation // until the mouse pointer is lifted. if (nc->current_state == SP_NODE_CONTEXT_INACTIVE) { - if (nc->shape_editor->hits_curve() && nc->shape_editor->has_nodepath()) { + if (se->hits_curve() && se->has_nodepath()) { nc->current_state = SP_NODE_CONTEXT_NODE_DRAGGING; } else { nc->current_state = SP_NODE_CONTEXT_RUBBERBAND_DRAGGING; @@ -344,7 +345,7 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) switch (nc->current_state) { case SP_NODE_CONTEXT_NODE_DRAGGING: { - nc->shape_editor->curve_drag (event->motion.x, event->motion.y); + se->curve_drag (event->motion.x, event->motion.y); gobble_motion_events(GDK_BUTTON1_MASK); break; @@ -362,12 +363,12 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) nc->drag = TRUE; ret = TRUE; } else { - if (!nc->shape_editor->has_nodepath() || selection->singleItem() == NULL) { + if (!se->has_nodepath() || selection->singleItem() == NULL) { break; } bool over_stroke = false; - over_stroke = nc->shape_editor->is_over_stroke(Geom::Point(event->motion.x, event->motion.y), false); + over_stroke = se->is_over_stroke(Geom::Point(event->motion.x, event->motion.y), false); if (nc->cursor_drag && !over_stroke) { event_context->cursor_shape = cursor_node_xpm; @@ -396,8 +397,8 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) event_context->xp = event_context->yp = 0; bool over_stroke = false; - if (nc->shape_editor->has_nodepath()) { - over_stroke = nc->shape_editor->is_over_stroke(Geom::Point(event->button.x, event->button.y), false); + if (se->has_nodepath()) { + over_stroke = se->is_over_stroke(Geom::Point(event->button.x, event->button.y), false); } if (item_clicked || over_stroke) { @@ -406,7 +407,7 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) case GDK_BUTTON_RELEASE: if (event->button.state & GDK_CONTROL_MASK && event->button.state & GDK_MOD1_MASK) { //add a node - nc->shape_editor->add_node_near_point(); + se->add_node_near_point(); } else { if (nc->added_node) { // we just received double click, ignore release nc->added_node = false; @@ -414,16 +415,16 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) } //select the segment if (event->button.state & GDK_SHIFT_MASK) { - nc->shape_editor->select_segment_near_point(true); + se->select_segment_near_point(true); } else { - nc->shape_editor->select_segment_near_point(false); + se->select_segment_near_point(false); } desktop->updateNow(); } break; case GDK_2BUTTON_PRESS: //add a node - nc->shape_editor->add_node_near_point(); + se->add_node_near_point(); nc->added_node = true; break; default: @@ -446,14 +447,14 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (event->button.button == 1) { Geom::OptRect b = Inkscape::Rubberband::get(desktop)->getRectangle(); - if (nc->shape_editor->hits_curve() && !event_context->within_tolerance) { //drag curve - nc->shape_editor->finish_drag(); + if (se->hits_curve() && !event_context->within_tolerance) { //drag curve + se->finish_drag(); } else if (b && !event_context->within_tolerance) { // drag to select - nc->shape_editor->select_rect(*b, event->button.state & GDK_SHIFT_MASK); + se->select_rect(*b, event->button.state & GDK_SHIFT_MASK); } else { if (!(nc->rb_escaped)) { // unless something was cancelled - if (nc->shape_editor->has_selection()) - nc->shape_editor->deselect(); + if (se->has_selection()) + se->deselect(); else sp_desktop_selection(desktop)->clear(); } @@ -463,7 +464,7 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) desktop->updateNow(); nc->rb_escaped = false; nc->drag = FALSE; - nc->shape_editor->cancel_hit(); + se->cancel_hit(); nc->current_state = SP_NODE_CONTEXT_INACTIVE; } } @@ -473,79 +474,79 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) case GDK_Insert: case GDK_KP_Insert: // with any modifiers - nc->shape_editor->add_node(); + se->add_node(); ret = TRUE; break; case GDK_Delete: case GDK_KP_Delete: case GDK_BackSpace: if (MOD__CTRL_ONLY) { - nc->shape_editor->delete_nodes(); + se->delete_nodes(); } else { - nc->shape_editor->delete_nodes_preserving_shape(); + se->delete_nodes_preserving_shape(); } ret = TRUE; break; case GDK_C: case GDK_c: if (MOD__SHIFT_ONLY) { - nc->shape_editor->set_node_type(Inkscape::NodePath::NODE_CUSP); + se->set_node_type(Inkscape::NodePath::NODE_CUSP); ret = TRUE; } break; case GDK_S: case GDK_s: if (MOD__SHIFT_ONLY) { - nc->shape_editor->set_node_type(Inkscape::NodePath::NODE_SMOOTH); + se->set_node_type(Inkscape::NodePath::NODE_SMOOTH); ret = TRUE; } break; case GDK_A: case GDK_a: if (MOD__SHIFT_ONLY) { - nc->shape_editor->set_node_type(Inkscape::NodePath::NODE_AUTO); + se->set_node_type(Inkscape::NodePath::NODE_AUTO); ret = TRUE; } break; case GDK_Y: case GDK_y: if (MOD__SHIFT_ONLY) { - nc->shape_editor->set_node_type(Inkscape::NodePath::NODE_SYMM); + se->set_node_type(Inkscape::NodePath::NODE_SYMM); ret = TRUE; } break; case GDK_B: case GDK_b: if (MOD__SHIFT_ONLY) { - nc->shape_editor->break_at_nodes(); + se->break_at_nodes(); ret = TRUE; } break; case GDK_J: case GDK_j: if (MOD__SHIFT_ONLY) { - nc->shape_editor->join_nodes(); + se->join_nodes(); ret = TRUE; } break; case GDK_D: case GDK_d: if (MOD__SHIFT_ONLY) { - nc->shape_editor->duplicate_nodes(); + se->duplicate_nodes(); ret = TRUE; } break; case GDK_L: case GDK_l: if (MOD__SHIFT_ONLY) { - nc->shape_editor->set_type_of_segments(NR_LINETO); + se->set_type_of_segments(NR_LINETO); ret = TRUE; } break; case GDK_U: case GDK_u: if (MOD__SHIFT_ONLY) { - nc->shape_editor->set_type_of_segments(NR_CURVETO); + se->set_type_of_segments(NR_CURVETO); ret = TRUE; } break; @@ -571,12 +572,12 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) gint mul = 1 + gobble_key_events( get_group0_keyval(&event->key), 0); // with any mask if (MOD__ALT) { // alt - if (MOD__SHIFT) nc->shape_editor->move_nodes_screen(desktop, mul*-10, 0); // shift - else nc->shape_editor->move_nodes_screen(desktop, mul*-1, 0); // no shift + if (MOD__SHIFT) se->move_nodes_screen(desktop, mul*-10, 0); // shift + else se->move_nodes_screen(desktop, mul*-1, 0); // no shift } else { // no alt - if (MOD__SHIFT) nc->shape_editor->move_nodes(mul*-10*nudge, 0); // shift - else nc->shape_editor->move_nodes(mul*-nudge, 0); // no shift + if (MOD__SHIFT) se->move_nodes(mul*-10*nudge, 0); // shift + else se->move_nodes(mul*-nudge, 0); // no shift } ret = TRUE; } @@ -588,12 +589,12 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) gint mul = 1 + gobble_key_events( get_group0_keyval(&event->key), 0); // with any mask if (MOD__ALT) { // alt - if (MOD__SHIFT) nc->shape_editor->move_nodes_screen(desktop, 0, mul*10); // shift - else nc->shape_editor->move_nodes_screen(desktop, 0, mul*1); // no shift + if (MOD__SHIFT) se->move_nodes_screen(desktop, 0, mul*10); // shift + else se->move_nodes_screen(desktop, 0, mul*1); // no shift } else { // no alt - if (MOD__SHIFT) nc->shape_editor->move_nodes(0, mul*10*nudge); // shift - else nc->shape_editor->move_nodes(0, mul*nudge); // no shift + if (MOD__SHIFT) se->move_nodes(0, mul*10*nudge); // shift + else se->move_nodes(0, mul*nudge); // no shift } ret = TRUE; } @@ -605,12 +606,12 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) gint mul = 1 + gobble_key_events( get_group0_keyval(&event->key), 0); // with any mask if (MOD__ALT) { // alt - if (MOD__SHIFT) nc->shape_editor->move_nodes_screen(desktop, mul*10, 0); // shift - else nc->shape_editor->move_nodes_screen(desktop, mul*1, 0); // no shift + if (MOD__SHIFT) se->move_nodes_screen(desktop, mul*10, 0); // shift + else se->move_nodes_screen(desktop, mul*1, 0); // no shift } else { // no alt - if (MOD__SHIFT) nc->shape_editor->move_nodes(mul*10*nudge, 0); // shift - else nc->shape_editor->move_nodes(mul*nudge, 0); // no shift + if (MOD__SHIFT) se->move_nodes(mul*10*nudge, 0); // shift + else se->move_nodes(mul*nudge, 0); // no shift } ret = TRUE; } @@ -622,12 +623,12 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) gint mul = 1 + gobble_key_events( get_group0_keyval(&event->key), 0); // with any mask if (MOD__ALT) { // alt - if (MOD__SHIFT) nc->shape_editor->move_nodes_screen(desktop, 0, mul*-10); // shift - else nc->shape_editor->move_nodes_screen(desktop, 0, mul*-1); // no shift + if (MOD__SHIFT) se->move_nodes_screen(desktop, 0, mul*-10); // shift + else se->move_nodes_screen(desktop, 0, mul*-1); // no shift } else { // no alt - if (MOD__SHIFT) nc->shape_editor->move_nodes(0, mul*-10*nudge); // shift - else nc->shape_editor->move_nodes(0, mul*-nudge); // no shift + if (MOD__SHIFT) se->move_nodes(0, mul*-10*nudge); // shift + else se->move_nodes(0, mul*-nudge); // no shift } ret = TRUE; } @@ -640,8 +641,8 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) nc->current_state = SP_NODE_CONTEXT_INACTIVE; nc->rb_escaped = true; } else { - if (nc->shape_editor->has_selection()) { - nc->shape_editor->deselect(); + if (se->has_selection()) { + se->deselect(); } else { sp_desktop_selection(desktop)->clear(); } @@ -653,40 +654,40 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) case GDK_bracketleft: if ( MOD__CTRL && !MOD__ALT && ( snaps != 0 ) ) { if (nc->leftctrl) - nc->shape_editor->rotate_nodes (M_PI/snaps, -1, false); + se->rotate_nodes (M_PI/snaps, -1, false); if (nc->rightctrl) - nc->shape_editor->rotate_nodes (M_PI/snaps, 1, false); + se->rotate_nodes (M_PI/snaps, 1, false); } else if ( MOD__ALT && !MOD__CTRL ) { if (nc->leftalt && nc->rightalt) - nc->shape_editor->rotate_nodes (1, 0, true); + se->rotate_nodes (1, 0, true); else { if (nc->leftalt) - nc->shape_editor->rotate_nodes (1, -1, true); + se->rotate_nodes (1, -1, true); if (nc->rightalt) - nc->shape_editor->rotate_nodes (1, 1, true); + se->rotate_nodes (1, 1, true); } } else if ( snaps != 0 ) { - nc->shape_editor->rotate_nodes (M_PI/snaps, 0, false); + se->rotate_nodes (M_PI/snaps, 0, false); } ret = TRUE; break; case GDK_bracketright: if ( MOD__CTRL && !MOD__ALT && ( snaps != 0 ) ) { if (nc->leftctrl) - nc->shape_editor->rotate_nodes (-M_PI/snaps, -1, false); + se->rotate_nodes (-M_PI/snaps, -1, false); if (nc->rightctrl) - nc->shape_editor->rotate_nodes (-M_PI/snaps, 1, false); + se->rotate_nodes (-M_PI/snaps, 1, false); } else if ( MOD__ALT && !MOD__CTRL ) { if (nc->leftalt && nc->rightalt) - nc->shape_editor->rotate_nodes (-1, 0, true); + se->rotate_nodes (-1, 0, true); else { if (nc->leftalt) - nc->shape_editor->rotate_nodes (-1, -1, true); + se->rotate_nodes (-1, -1, true); if (nc->rightalt) - nc->shape_editor->rotate_nodes (-1, 1, true); + se->rotate_nodes (-1, 1, true); } } else if ( snaps != 0 ) { - nc->shape_editor->rotate_nodes (-M_PI/snaps, 0, false); + se->rotate_nodes (-M_PI/snaps, 0, false); } ret = TRUE; break; @@ -694,20 +695,20 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) case GDK_comma: if (MOD__CTRL) { if (nc->leftctrl) - nc->shape_editor->scale_nodes(-offset, -1); + se->scale_nodes(-offset, -1); if (nc->rightctrl) - nc->shape_editor->scale_nodes(-offset, 1); + se->scale_nodes(-offset, 1); } else if (MOD__ALT) { if (nc->leftalt && nc->rightalt) - nc->shape_editor->scale_nodes_screen (-1, 0); + se->scale_nodes_screen (-1, 0); else { if (nc->leftalt) - nc->shape_editor->scale_nodes_screen (-1, -1); + se->scale_nodes_screen (-1, -1); if (nc->rightalt) - nc->shape_editor->scale_nodes_screen (-1, 1); + se->scale_nodes_screen (-1, 1); } } else { - nc->shape_editor->scale_nodes (-offset, 0); + se->scale_nodes (-offset, 0); } ret = TRUE; break; @@ -715,20 +716,20 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) case GDK_period: if (MOD__CTRL) { if (nc->leftctrl) - nc->shape_editor->scale_nodes (offset, -1); + se->scale_nodes (offset, -1); if (nc->rightctrl) - nc->shape_editor->scale_nodes (offset, 1); + se->scale_nodes (offset, 1); } else if (MOD__ALT) { if (nc->leftalt && nc->rightalt) - nc->shape_editor->scale_nodes_screen (1, 0); + se->scale_nodes_screen (1, 0); else { if (nc->leftalt) - nc->shape_editor->scale_nodes_screen (1, -1); + se->scale_nodes_screen (1, -1); if (nc->rightalt) - nc->shape_editor->scale_nodes_screen (1, 1); + se->scale_nodes_screen (1, 1); } } else { - nc->shape_editor->scale_nodes (offset, 0); + se->scale_nodes (offset, 0); } ret = TRUE; break; diff --git a/src/node-context.h b/src/node-context.h index f266cc413..0e141274f 100644 --- a/src/node-context.h +++ b/src/node-context.h @@ -38,8 +38,6 @@ struct SPNodeContext { guint drag : 1; - ShapeEditor* shape_editor; - gboolean leftalt; gboolean rightalt; gboolean leftctrl; diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index de8662cc3..9081bbdb2 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -1731,7 +1731,7 @@ void sp_selection_edit_clip_or_mask(SPDesktop * dt, bool clip) tools_switch(dt, TOOLS_NODES); } - ShapeEditor * shape_editor = SP_NODE_CONTEXT( dt->event_context )->shape_editor; + ShapeEditor * shape_editor = dt->event_context->shape_editor; // TODO: should we set the item for nodepath or knotholder or both? seems to work with both. shape_editor->set_item(SP_ITEM(child), SH_NODEPATH); shape_editor->set_item(SP_ITEM(child), SH_KNOTHOLDER); diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index 1939b2ec0..f1e4c96c2 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -252,8 +252,7 @@ sp_lpe_item_update(SPObject *object, SPCtx *ctx, guint flags) // FIXME: ditch inkscape_active_event_context() SPEventContext *ec = inkscape_active_event_context(); if (!SP_IS_NODE_CONTEXT(ec)) return; - SPNodeContext *nc = SP_NODE_CONTEXT(ec); - ShapeEditor *sh = nc->shape_editor; + ShapeEditor *sh = ec->shape_editor; g_assert(sh); if (!sh->has_nodepath()) return; diff --git a/src/ui/dialog/align-and-distribute.cpp b/src/ui/dialog/align-and-distribute.cpp index b509d041f..3203816d3 100644 --- a/src/ui/dialog/align-and-distribute.cpp +++ b/src/ui/dialog/align-and-distribute.cpp @@ -441,9 +441,9 @@ private : if (!SP_IS_NODE_CONTEXT (event_context)) return ; if (_distribute) - SP_NODE_CONTEXT (event_context)->shape_editor->distribute((Geom::Dim2)_orientation); + event_context->shape_editor->distribute((Geom::Dim2)_orientation); else - SP_NODE_CONTEXT (event_context)->shape_editor->align((Geom::Dim2)_orientation); + event_context->shape_editor->align((Geom::Dim2)_orientation); } }; diff --git a/src/verbs.cpp b/src/verbs.cpp index 46dc86823..c84a17da6 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -921,28 +921,28 @@ EditVerb::perform(SPAction *action, void *data, void */*pdata*/) break; case SP_VERB_EDIT_SELECT_ALL: if (tools_isactive(dt, TOOLS_NODES)) { - SP_NODE_CONTEXT(ec)->shape_editor->select_all_from_subpath(false); + ec->shape_editor->select_all_from_subpath(false); } else { sp_edit_select_all(dt); } break; case SP_VERB_EDIT_INVERT: if (tools_isactive(dt, TOOLS_NODES)) { - SP_NODE_CONTEXT(ec)->shape_editor->select_all_from_subpath(true); + ec->shape_editor->select_all_from_subpath(true); } else { sp_edit_invert(dt); } break; case SP_VERB_EDIT_SELECT_ALL_IN_ALL_LAYERS: if (tools_isactive(dt, TOOLS_NODES)) { - SP_NODE_CONTEXT(ec)->shape_editor->select_all(false); + ec->shape_editor->select_all(false); } else { sp_edit_select_all_in_all_layers(dt); } break; case SP_VERB_EDIT_INVERT_IN_ALL_LAYERS: if (tools_isactive(dt, TOOLS_NODES)) { - SP_NODE_CONTEXT(ec)->shape_editor->select_all(true); + ec->shape_editor->select_all(true); } else { sp_edit_invert_in_all_layers(dt); } @@ -950,7 +950,7 @@ EditVerb::perform(SPAction *action, void *data, void */*pdata*/) case SP_VERB_EDIT_SELECT_NEXT: if (tools_isactive(dt, TOOLS_NODES)) { - SP_NODE_CONTEXT(ec)->shape_editor->select_next(); + ec->shape_editor->select_next(); } else if (tools_isactive(dt, TOOLS_GRADIENT) && ec->_grdrag->isNonEmpty()) { sp_gradient_context_select_next (ec); @@ -960,7 +960,7 @@ EditVerb::perform(SPAction *action, void *data, void */*pdata*/) break; case SP_VERB_EDIT_SELECT_PREV: if (tools_isactive(dt, TOOLS_NODES)) { - SP_NODE_CONTEXT(ec)->shape_editor->select_prev(); + ec->shape_editor->select_prev(); } else if (tools_isactive(dt, TOOLS_GRADIENT) && ec->_grdrag->isNonEmpty()) { sp_gradient_context_select_prev (ec); @@ -971,7 +971,7 @@ EditVerb::perform(SPAction *action, void *data, void */*pdata*/) case SP_VERB_EDIT_DESELECT: if (tools_isactive(dt, TOOLS_NODES)) { - SP_NODE_CONTEXT(ec)->shape_editor->deselect(); + ec->shape_editor->deselect(); } else { sp_desktop_selection(dt)->clear(); } @@ -1356,11 +1356,11 @@ ObjectVerb::perform( SPAction *action, void *data, void */*pdata*/ ) if (active_node) { // ... flip the selected nodes about that node - SP_NODE_CONTEXT(ec)->shape_editor->flip(Geom::X, active_node->pos); + ec->shape_editor->flip(Geom::X, active_node->pos); } else { // ... or else about the center of their bounding box. - SP_NODE_CONTEXT(ec)->shape_editor->flip(Geom::X); + ec->shape_editor->flip(Geom::X); } // When working with the selector tool, flip the selection about its rotation center @@ -1376,9 +1376,9 @@ ObjectVerb::perform( SPAction *action, void *data, void */*pdata*/ ) if (tools_isactive(dt, TOOLS_NODES)) { Inkscape::NodePath::Node *active_node = Inkscape::NodePath::Path::active_node; if (active_node) { - SP_NODE_CONTEXT(ec)->shape_editor->flip(Geom::Y, active_node->pos); + ec->shape_editor->flip(Geom::Y, active_node->pos); } else { - SP_NODE_CONTEXT(ec)->shape_editor->flip(Geom::Y); + ec->shape_editor->flip(Geom::Y); } } else { sp_selection_scale_relative(sel, center, Geom::Scale(1.0, -1.0)); diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index ca6a72ca2..c2e80db78 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -968,7 +968,7 @@ static ShapeEditor *get_current_shape_editor() return NULL; } - return SP_NODE_CONTEXT(event_context)->shape_editor; + return event_context->shape_editor; }