summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabiertxo Arraiza Cenoz <jtx@jtx-desktop.markerlab.es>2017-12-27 18:38:11 +0000
committerJabiertxo Arraiza Cenoz <jtx@jtx-desktop.markerlab.es>2017-12-27 18:38:11 +0000
commit421d3605d3c6dd8a54a36236cbeb478dff06f194 (patch)
tree96f1a329c63c94fadb70fa0edcf26187e85ed9d4 /src
parentMerge branch 'master' into powerpencilII (diff)
downloadinkscape-421d3605d3c6dd8a54a36236cbeb478dff06f194.tar.gz
inkscape-421d3605d3c6dd8a54a36236cbeb478dff06f194.zip
Allow erase knots in powerstroke
Diffstat (limited to 'src')
-rw-r--r--src/knot.cpp4
-rw-r--r--src/live_effects/parameter/powerstrokepointarray.cpp29
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