diff options
| author | Jabiertxo Arraiza Cenoz <jtx@jtx-desktop.markerlab.es> | 2017-12-27 18:38:11 +0000 |
|---|---|---|
| committer | Jabiertxo Arraiza Cenoz <jtx@jtx-desktop.markerlab.es> | 2017-12-27 18:38:11 +0000 |
| commit | 421d3605d3c6dd8a54a36236cbeb478dff06f194 (patch) | |
| tree | 96f1a329c63c94fadb70fa0edcf26187e85ed9d4 /src | |
| parent | Merge branch 'master' into powerpencilII (diff) | |
| download | inkscape-421d3605d3c6dd8a54a36236cbeb478dff06f194.tar.gz inkscape-421d3605d3c6dd8a54a36236cbeb478dff06f194.zip | |
Allow erase knots in powerstroke
Diffstat (limited to 'src')
| -rw-r--r-- | src/knot.cpp | 4 | ||||
| -rw-r--r-- | src/live_effects/parameter/powerstrokepointarray.cpp | 29 |
2 files changed, 17 insertions, 16 deletions
diff --git a/src/knot.cpp b/src/knot.cpp index 8296891f4..b2f6dbe62 100644 --- a/src/knot.cpp +++ b/src/knot.cpp @@ -471,7 +471,9 @@ void SPKnot::updateCtrl() { void SPKnot::_setCtrlState() { int state = SP_KNOT_STATE_NORMAL; - if (this->flags & SP_KNOT_DRAGGING) { + if (this->flags | SP_KNOT_VISIBLE) { + return; + } else if (this->flags & SP_KNOT_DRAGGING) { state = SP_KNOT_STATE_DRAGGING; } else if (this->flags & SP_KNOT_MOUSEOVER) { state = SP_KNOT_STATE_MOUSEOVER; diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp index 289498498..64c772602 100644 --- a/src/live_effects/parameter/powerstrokepointarray.cpp +++ b/src/live_effects/parameter/powerstrokepointarray.cpp @@ -230,22 +230,21 @@ PowerStrokePointArrayParamKnotHolderEntity::knot_click(guint state) if (state & GDK_MOD1_MASK) { // delete the clicked knot std::vector<Geom::Point> & vec = _pparam->_vector; - vec.erase(vec.begin() + _index); - _pparam->param_set_and_write_new_value(vec); - - // remove knot from knotholder - parent_holder->entity.remove(this); - // shift knots down one index - for(std::list<KnotHolderEntity *>::iterator ent = parent_holder->entity.begin(); ent != parent_holder->entity.end(); ++ent) { - PowerStrokePointArrayParamKnotHolderEntity *pspa_ent = dynamic_cast<PowerStrokePointArrayParamKnotHolderEntity *>(*ent); - if ( pspa_ent && pspa_ent->_pparam == this->_pparam ) { // check if the knotentity belongs to this powerstrokepointarray parameter - if (pspa_ent->_index > this->_index) { - --pspa_ent->_index; + if (vec.size() > 1) { //Force dont remove last knot + vec.erase(vec.begin() + _index); + _pparam->param_set_and_write_new_value(vec); + // shift knots down one index + for(std::list<KnotHolderEntity *>::iterator ent = parent_holder->entity.begin(); ent != parent_holder->entity.end(); ++ent) { + PowerStrokePointArrayParamKnotHolderEntity *pspa_ent = dynamic_cast<PowerStrokePointArrayParamKnotHolderEntity *>(*ent); + if ( pspa_ent && pspa_ent->_pparam == this->_pparam ) { // check if the knotentity belongs to this powerstrokepointarray parameter + if (pspa_ent->_index > this->_index) { + --pspa_ent->_index; + } } - } - }; - // delete self and return - delete this; + }; + // temporary hide, when knotholder were recreated it finaly drop + this->knot->hide(); + } return; } else { // add a knot to XML |
