diff options
| author | Jabiertxof <jabier.arraiza@marker.es> | 2019-11-02 23:15:56 +0000 |
|---|---|---|
| committer | Jabiertxof <jabier.arraiza@marker.es> | 2019-11-02 23:15:56 +0000 |
| commit | 0175d30778b93a1b79e9dedc53f037e81de729b7 (patch) | |
| tree | c651f299480ba4374efa1436dd4ffc0a409fa3a2 | |
| parent | Allow forking on powermask (diff) | |
| download | inkscape-0175d30778b93a1b79e9dedc53f037e81de729b7.tar.gz inkscape-0175d30778b93a1b79e9dedc53f037e81de729b7.zip | |
Improve speed of LPE's updating widgets on release knots instead when value change
21 files changed, 51 insertions, 39 deletions
diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index 0b65b7e1c..41438d69d 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -1110,7 +1110,7 @@ Effect::Effect(LivePathEffectObject *lpeobject) concatenate_before_pwd2(false), sp_lpe_item(nullptr), current_zoom(1), - upd_params(false), + refresh_widgets(false), current_shape(nullptr), provides_own_flash_paths(true), // is automatically set to false if providesOwnFlashPaths() is not overridden defaultsopen(false), diff --git a/src/live_effects/effect.h b/src/live_effects/effect.h index f3b315c0f..a5acb655c 100644 --- a/src/live_effects/effect.h +++ b/src/live_effects/effect.h @@ -138,7 +138,7 @@ public: bool apply_to_clippath_and_mask; bool keep_paths; // set this to false allow retain extra generated objects, see measure line LPE bool is_load; - bool upd_params; + bool refresh_widgets; BoolParam is_visible; Geom::PathVector pathvector_before_effect; Geom::PathVector pathvector_after_effect; diff --git a/src/live_effects/lpe-clone-original.cpp b/src/live_effects/lpe-clone-original.cpp index 8df64b6c0..882107150 100644 --- a/src/live_effects/lpe-clone-original.cpp +++ b/src/live_effects/lpe-clone-original.cpp @@ -79,7 +79,7 @@ LPECloneOriginal::syncOriginal() // TODO remove the tools_switch atrocity. sp_lpe_item_update_patheffect (sp_lpe_item, false, true); method.param_set_value(CLM_NONE); - upd_params = true; + refresh_widgets = true; SPDesktop *desktop = SP_ACTIVE_DESKTOP; sp_lpe_item_update_patheffect (sp_lpe_item, false, true); if (desktop && tools_isactive(desktop, TOOLS_NODES)) { diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index a0e13b020..e72bfbc82 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -1069,13 +1069,10 @@ LPEMeasureSegments::doBeforeEffect (SPLPEItem const* lpeitem) items.emplace_back("ArrowDIN-end"); } } - if (((Geom::are_near(prev, prev_stored, 0.01) && Geom::are_near(next, next_stored, 0.01)) || + if (((Geom::are_near(prev, prev_stored, 0.01) && Geom::are_near(next, next_stored, 0.01)) || fix_overlaps_degree == 180) && - Geom::are_near(start, start_stored, 0.01) && - Geom::are_near(end, end_stored, 0.01) && - !this->upd_params && - !colorchanged) - { + Geom::are_near(start, start_stored, 0.01) && Geom::are_near(end, end_stored, 0.01) && + !this->refresh_widgets && !colorchanged) { continue; } Geom::Point hstart = start; diff --git a/src/live_effects/lpe-offset.cpp b/src/live_effects/lpe-offset.cpp index ce4cb5e2e..e120d4b5a 100644 --- a/src/live_effects/lpe-offset.cpp +++ b/src/live_effects/lpe-offset.cpp @@ -456,7 +456,7 @@ namespace OfS { void KnotHolderEntityOffsetPoint::knot_ungrabbed(Geom::Point const &p, Geom::Point const& /*origin*/, guint state) { LPEOffset* lpe = dynamic_cast<LPEOffset *>(_effect); - lpe->upd_params = true; + lpe->refresh_widgets = true; } void KnotHolderEntityOffsetPoint::knot_set(Geom::Point const &p, Geom::Point const& /*origin*/, guint state) diff --git a/src/live_effects/parameter/bool.cpp b/src/live_effects/parameter/bool.cpp index 26d27ebab..b02d0c22f 100644 --- a/src/live_effects/parameter/bool.cpp +++ b/src/live_effects/parameter/bool.cpp @@ -92,7 +92,7 @@ void BoolParam::param_setValue(bool newvalue) { if (value != newvalue) { - param_effect->upd_params = true; + param_effect->refresh_widgets = true; } value = newvalue; } diff --git a/src/live_effects/parameter/enum.h b/src/live_effects/parameter/enum.h index b7964d988..c0c372366 100644 --- a/src/live_effects/parameter/enum.h +++ b/src/live_effects/parameter/enum.h @@ -54,9 +54,7 @@ public: return dynamic_cast<Gtk::Widget *> (regenum); }; - void _on_change_combo() { - param_effect->upd_params = true; - } + void _on_change_combo() { param_effect->refresh_widgets = true; } bool param_readSVGValue(const gchar * strvalue) override { if (!strvalue) { param_set_default(); diff --git a/src/live_effects/parameter/fontbutton.cpp b/src/live_effects/parameter/fontbutton.cpp index 038a58fc6..3c48d8945 100644 --- a/src/live_effects/parameter/fontbutton.cpp +++ b/src/live_effects/parameter/fontbutton.cpp @@ -84,7 +84,7 @@ void FontButtonParam::param_setValue(const Glib::ustring newvalue) { if (value != newvalue) { - param_effect->upd_params = true; + param_effect->refresh_widgets = true; } value = newvalue; } diff --git a/src/live_effects/parameter/message.cpp b/src/live_effects/parameter/message.cpp index 22ca479d9..a832f1f3a 100644 --- a/src/live_effects/parameter/message.cpp +++ b/src/live_effects/parameter/message.cpp @@ -105,7 +105,7 @@ void MessageParam::param_setValue(const gchar * strvalue) { if (strcmp(strvalue, message) != 0) { - param_effect->upd_params = true; + param_effect->refresh_widgets = true; } message = strvalue; } diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 7ccd187ea..7c7e12c3f 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -170,7 +170,7 @@ PointParam::param_newWidget() } bool PointParam::on_button_release(GdkEventButton* button_event) { - param_effect->upd_params = true; + param_effect->refresh_widgets = true; return false; } @@ -189,7 +189,7 @@ public: void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state) override; Geom::Point knot_get() const override; - void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {}; + void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override; void knot_click(guint state) override; private: @@ -211,7 +211,6 @@ PointParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &or s = A; } } - pparam->param_effect->upd_params = true; if(this->pparam->liveupdate){ pparam->param_setValue(s, true); } else { @@ -236,6 +235,11 @@ PointParamKnotHolderEntity::knot_click(guint state) } } +void PointParamKnotHolderEntity::knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) +{ + pparam->param_effect->refresh_widgets = true; +} + void PointParam::addKnotHolderEntities(KnotHolder *knotholder, SPItem *item) { diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp index a39c872cd..3441b8bae 100644 --- a/src/live_effects/parameter/powerstrokepointarray.cpp +++ b/src/live_effects/parameter/powerstrokepointarray.cpp @@ -180,7 +180,6 @@ PowerStrokePointArrayParamKnotHolderEntity::knot_set(Geom::Point const &p, Geom: if (!valid_index(_index)) { return; } - _pparam->param_effect->upd_params = true; /// @todo how about item transforms??? Piecewise<D2<SBasis> > const & pwd2 = _pparam->get_pwd2(); Piecewise<D2<SBasis> > const & n = _pparam->get_pwd2_normal(); @@ -217,9 +216,14 @@ PowerStrokePointArrayParamKnotHolderEntity::knot_get() const return canvas_point; } +void PowerStrokePointArrayParamKnotHolderEntity::knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, + guint state) +{ + _pparam->param_effect->refresh_widgets = true; +} + void PowerStrokePointArrayParamKnotHolderEntity::knot_set_offset(Geom::Point offset) { - _pparam->param_effect->upd_params = true; _pparam->_vector.at(_index) = Geom::Point(offset.x(), offset.y() / 2); this->parent_holder->knot_ungrabbed_handler(this->knot, 0); } diff --git a/src/live_effects/parameter/powerstrokepointarray.h b/src/live_effects/parameter/powerstrokepointarray.h index fff41200a..36c44322b 100644 --- a/src/live_effects/parameter/powerstrokepointarray.h +++ b/src/live_effects/parameter/powerstrokepointarray.h @@ -71,7 +71,7 @@ public: ~PowerStrokePointArrayParamKnotHolderEntity() override = default; void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state) override; - void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {}; + void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override; Geom::Point knot_get() const override; virtual void knot_set_offset(Geom::Point offset); void knot_click(guint state) override; diff --git a/src/live_effects/parameter/random.cpp b/src/live_effects/parameter/random.cpp index 176790c65..b02a8fe5e 100644 --- a/src/live_effects/parameter/random.cpp +++ b/src/live_effects/parameter/random.cpp @@ -159,7 +159,7 @@ RandomParam::param_newWidget() } bool RandomParam::on_button_release(GdkEventButton* button_event) { - param_effect->upd_params = true; + param_effect->refresh_widgets = true; return false; } diff --git a/src/live_effects/parameter/satellitesarray.cpp b/src/live_effects/parameter/satellitesarray.cpp index 311f1e0ce..c80271c4c 100644 --- a/src/live_effects/parameter/satellitesarray.cpp +++ b/src/live_effects/parameter/satellitesarray.cpp @@ -231,6 +231,11 @@ FilletChamferKnotHolderEntity::FilletChamferKnotHolderEntity( SatellitesArrayParam *p, size_t index) : _pparam(p), _index(index) {} +void FilletChamferKnotHolderEntity::knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) +{ + _pparam->param_effect->refresh_widgets = true; +} + void FilletChamferKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state) @@ -238,7 +243,6 @@ void FilletChamferKnotHolderEntity::knot_set(Geom::Point const &p, if (!_pparam->_last_pathvector_satellites) { return; } - _pparam->param_effect->upd_params = true; size_t total_satellites = _pparam->_last_pathvector_satellites->getTotalSatellites(); bool is_mirror = false; size_t index = _index; @@ -457,7 +461,6 @@ void FilletChamferKnotHolderEntity::knot_set_offset(Satellite satellite) if (!_pparam->_last_pathvector_satellites) { return; } - _pparam->param_effect->upd_params = true; size_t total_satellites = _pparam->_last_pathvector_satellites->getTotalSatellites(); bool is_mirror = false; size_t index = _index; diff --git a/src/live_effects/parameter/satellitesarray.h b/src/live_effects/parameter/satellitesarray.h index 1e2dfc2eb..855f2fc91 100644 --- a/src/live_effects/parameter/satellitesarray.h +++ b/src/live_effects/parameter/satellitesarray.h @@ -92,7 +92,7 @@ public: guint state) override; Geom::Point knot_get() const override; void knot_click(guint state) override; - void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {}; + void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override; void knot_set_offset(Satellite); /** Checks whether the index falls within the size of the parameter's vector */ diff --git a/src/live_effects/parameter/text.cpp b/src/live_effects/parameter/text.cpp index 6f9896981..7feb2e6a7 100644 --- a/src/live_effects/parameter/text.cpp +++ b/src/live_effects/parameter/text.cpp @@ -155,7 +155,7 @@ void TextParam::param_setValue(const Glib::ustring newvalue) { if (value != newvalue) { - param_effect->upd_params = true; + param_effect->refresh_widgets = true; } value = newvalue; if (!_hide_canvas_text) { diff --git a/src/live_effects/parameter/togglebutton.cpp b/src/live_effects/parameter/togglebutton.cpp index 6d92a8b76..f2cbdf121 100644 --- a/src/live_effects/parameter/togglebutton.cpp +++ b/src/live_effects/parameter/togglebutton.cpp @@ -179,7 +179,7 @@ void ToggleButtonParam::param_setValue(bool newvalue) { if (value != newvalue) { - param_effect->upd_params = true; + param_effect->refresh_widgets = true; } value = newvalue; refresh_button(); diff --git a/src/live_effects/parameter/transformedpoint.cpp b/src/live_effects/parameter/transformedpoint.cpp index a5fefc709..7f842e3d6 100644 --- a/src/live_effects/parameter/transformedpoint.cpp +++ b/src/live_effects/parameter/transformedpoint.cpp @@ -167,14 +167,16 @@ public: ~TransformedPointParamKnotHolderEntity_Vector() override = default; void knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint /*state*/) override { - param->param_effect->upd_params = true; Geom::Point const s = p - param->origin; /// @todo implement angle snapping when holding CTRL param->setVector(s); param->set_and_write_new_values(param->origin, param->vector); sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); }; - void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {}; + void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override + { + param->param_effect->refresh_widgets = true; + }; Geom::Point knot_get() const override{ return param->origin + param->vector; }; diff --git a/src/live_effects/parameter/unit.cpp b/src/live_effects/parameter/unit.cpp index 109d7fced..7a9ccdd4b 100644 --- a/src/live_effects/parameter/unit.cpp +++ b/src/live_effects/parameter/unit.cpp @@ -69,7 +69,7 @@ UnitParam::param_update_default(const gchar * default_unit) void UnitParam::param_set_value(Inkscape::Util::Unit const &val) { - param_effect->upd_params = true; + param_effect->refresh_widgets = true; unit = new Inkscape::Util::Unit(val); } diff --git a/src/live_effects/parameter/vector.cpp b/src/live_effects/parameter/vector.cpp index 63aca130e..636ef7a9e 100644 --- a/src/live_effects/parameter/vector.cpp +++ b/src/live_effects/parameter/vector.cpp @@ -174,7 +174,6 @@ public: ~VectorParamKnotHolderEntity_Origin() override = default; void knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state) override { - param->param_effect->upd_params = true; Geom::Point const s = snap_knot_position(p, state); param->setOrigin(s); param->set_and_write_new_values(param->origin, param->vector); @@ -183,7 +182,10 @@ public: Geom::Point knot_get() const override { return param->origin; }; - void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {}; + void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override + { + param->param_effect->refresh_widgets = true; + }; void knot_click(guint /*state*/) override{ g_print ("This is the origin handle associated to parameter '%s'\n", param->param_key.c_str()); }; @@ -199,7 +201,6 @@ public: void knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint /*state*/) override { Geom::Point const s = p - param->origin; - param->param_effect->upd_params = true; /// @todo implement angle snapping when holding CTRL param->setVector(s); param->set_and_write_new_values(param->origin, param->vector); @@ -208,7 +209,10 @@ public: Geom::Point knot_get() const override { return param->origin + param->vector; }; - void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {}; + void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override + { + param->param_effect->refresh_widgets = true; + }; void knot_click(guint /*state*/) override{ g_print ("This is the vector handle associated to parameter '%s'\n", param->param_key.c_str()); }; diff --git a/src/ui/dialog/livepatheffect-editor.cpp b/src/ui/dialog/livepatheffect-editor.cpp index 8eea0895f..49da3f4d1 100644 --- a/src/ui/dialog/livepatheffect-editor.cpp +++ b/src/ui/dialog/livepatheffect-editor.cpp @@ -209,7 +209,7 @@ bool LivePathEffectEditor::_on_button_release(GdkEventButton* button_event) { if (lperef->getObject()) { LivePathEffect::Effect * effect = lperef->lpeobject->get_lpe(); if (effect) { - effect->upd_params = true; + effect->refresh_widgets = true; showParams(*effect); } } @@ -220,7 +220,7 @@ bool LivePathEffectEditor::_on_button_release(GdkEventButton* button_event) { void LivePathEffectEditor::showParams(LivePathEffect::Effect& effect) { - if (effectwidget && !effect.upd_params) { + if (effectwidget && !effect.refresh_widgets) { return; } if (effectwidget) { @@ -237,7 +237,7 @@ LivePathEffectEditor::showParams(LivePathEffect::Effect& effect) effectcontrol_frame.show(); effectcontrol_vbox.show_all_children(); // fixme: add resizing of dialog - effect.upd_params = false; + effect.refresh_widgets = false; } void @@ -561,7 +561,7 @@ void LivePathEffectEditor::on_effect_selection_changed() current_lperef = lperef; LivePathEffect::Effect * effect = lperef->lpeobject->get_lpe(); if (effect) { - effect->upd_params = true; + effect->refresh_widgets = true; showParams(*effect); //To reload knots and helper paths Inkscape::Selection *sel = _getSelection(); |
