diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2017-12-04 17:24:16 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2017-12-04 17:24:16 +0000 |
| commit | 25e5f4d5c57be30b7947a16867b5a6044a892f52 (patch) | |
| tree | 0af8a9bcd9207bc78cb0882721dfd3b79db1aefb /src | |
| parent | Merge branch 'transupdate-master' of gitlab.com:Moini/inkscape (diff) | |
| download | inkscape-25e5f4d5c57be30b7947a16867b5a6044a892f52.tar.gz inkscape-25e5f4d5c57be30b7947a16867b5a6044a892f52.zip | |
Adding fix to sliders and spin buttons on LPE
Diffstat (limited to 'src')
| -rw-r--r-- | src/live_effects/parameter/parameter.cpp | 11 | ||||
| -rw-r--r-- | src/live_effects/parameter/parameter.h | 2 | ||||
| -rw-r--r-- | src/live_effects/parameter/point.cpp | 6 | ||||
| -rw-r--r-- | src/live_effects/parameter/point.h | 1 | ||||
| -rw-r--r-- | src/live_effects/parameter/random.cpp | 7 | ||||
| -rw-r--r-- | src/live_effects/parameter/random.h | 1 | ||||
| -rw-r--r-- | src/ui/widget/registered-widget.cpp | 24 | ||||
| -rw-r--r-- | src/ui/widget/registered-widget.h | 3 | ||||
| -rw-r--r-- | src/ui/widget/scalar.cpp | 6 | ||||
| -rw-r--r-- | src/ui/widget/scalar.h | 6 |
10 files changed, 43 insertions, 24 deletions
diff --git a/src/live_effects/parameter/parameter.cpp b/src/live_effects/parameter/parameter.cpp index 319ab3fe8..497113e03 100644 --- a/src/live_effects/parameter/parameter.cpp +++ b/src/live_effects/parameter/parameter.cpp @@ -129,9 +129,6 @@ ScalarParam::param_update_default(const gchar * default_value) void ScalarParam::param_set_value(gdouble val) { - if (value != val) { - param_effect->upd_params = true; - } value = val; if (integer) value = round(value); @@ -180,7 +177,7 @@ ScalarParam::param_set_undo(bool set_undo) Gtk::Widget * ScalarParam::param_newWidget() { - if(widget_is_visible){ + if (widget_is_visible) { Inkscape::UI::Widget::RegisteredScalar *rsu = Gtk::manage( new Inkscape::UI::Widget::RegisteredScalar( param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc() ) ); @@ -192,6 +189,7 @@ ScalarParam::param_newWidget() if (add_slider) { rsu->addSlider(); } + rsu->signal_button_release_event().connect(sigc::mem_fun (*this, &ScalarParam::on_button_release)); if(_set_undo){ rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change scalar parameter")); } @@ -201,6 +199,11 @@ ScalarParam::param_newWidget() } } +bool ScalarParam::on_button_release(GdkEventButton* button_event) { + param_effect->upd_params = true; + return false; +} + void ScalarParam::param_set_digits(unsigned digits) { diff --git a/src/live_effects/parameter/parameter.h b/src/live_effects/parameter/parameter.h index 1586ef346..aa4212f15 100644 --- a/src/live_effects/parameter/parameter.h +++ b/src/live_effects/parameter/parameter.h @@ -141,6 +141,8 @@ protected: bool _set_undo; private: + bool on_button_release(GdkEventButton* button_event); + ScalarParam(const ScalarParam&); ScalarParam& operator=(const ScalarParam&); }; diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index da6edf812..ff5f59ce2 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -146,6 +146,7 @@ PointParam::param_newWidget() pointwdg->setValue( *this ); pointwdg->clearProgrammatically(); pointwdg->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change point parameter")); + pointwdg->signal_button_release_event().connect(sigc::mem_fun (*this, &PointParam::on_button_release)); Gtk::HBox * hbox = Gtk::manage( new Gtk::HBox() ); static_cast<Gtk::HBox*>(hbox)->pack_start(*pointwdg, true, true); @@ -153,6 +154,11 @@ PointParam::param_newWidget() return dynamic_cast<Gtk::Widget *> (hbox); } +bool PointParam::on_button_release(GdkEventButton* button_event) { + param_effect->upd_params = true; + return false; +} + void PointParam::set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color) { diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index 03256f6d0..6c5f8df65 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -57,6 +57,7 @@ public: private: PointParam(const PointParam&); PointParam& operator=(const PointParam&); + bool on_button_release(GdkEventButton* button_event); Geom::Point defvalue; bool liveupdate; KnotHolder *knoth; diff --git a/src/live_effects/parameter/random.cpp b/src/live_effects/parameter/random.cpp index c2c1b5440..4afa43c6e 100644 --- a/src/live_effects/parameter/random.cpp +++ b/src/live_effects/parameter/random.cpp @@ -103,7 +103,6 @@ RandomParam::param_update_default(const gchar * default_value){ void RandomParam::param_set_value(gdouble val, long newseed) { - param_effect->upd_params = true; value = val; if (integer) value = round(value); @@ -154,12 +153,18 @@ RandomParam::param_newWidget() } regrandom->setRange(min, max); regrandom->setProgrammatically = false; + regrandom->signal_button_release_event().connect(sigc::mem_fun (*this, &RandomParam::on_button_release)); regrandom->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change random parameter")); return dynamic_cast<Gtk::Widget *> (regrandom); } +bool RandomParam::on_button_release(GdkEventButton* button_event) { + param_effect->upd_params = true; + return false; +} + RandomParam::operator gdouble() { return rand() * value; diff --git a/src/live_effects/parameter/random.h b/src/live_effects/parameter/random.h index c10473e85..a2c3712a1 100644 --- a/src/live_effects/parameter/random.h +++ b/src/live_effects/parameter/random.h @@ -57,6 +57,7 @@ protected: gdouble defvalue; private: + bool on_button_release(GdkEventButton* button_event); long setup_seed(long); gdouble rand(); diff --git a/src/ui/widget/registered-widget.cpp b/src/ui/widget/registered-widget.cpp index a88413347..5dfc70cc3 100644 --- a/src/ui/widget/registered-widget.cpp +++ b/src/ui/widget/registered-widget.cpp @@ -279,7 +279,6 @@ RegisteredScalar::RegisteredScalar ( const Glib::ustring& label, const Glib::ust init_parent(key, wr, repr_in, doc_in); setProgrammatically = false; - setRange (-1e6, 1e6); setDigits (2); setIncrements(0.1, 1.0); @@ -299,12 +298,14 @@ RegisteredScalar::on_value_changed() _wr->setUpdating (true); Inkscape::SVGOStringStream os; - os << getValue(); - - set_sensitive(false); + //Force exact 0 if decimals over to 10 + double val = getValue() < 1E-10 && getValue() > -1E-10?0.0:getValue(); + os << val << ';'; + //TODO: Test is ok remove this sensitives + //also removed in registed text and in registered random + //set_sensitive(false); write_to_xml(os.str().c_str()); - set_sensitive(true); - + //set_sensitive(true); _wr->setUpdating (false); } @@ -342,11 +343,9 @@ RegisteredText::on_activate() } _wr->setUpdating (true); Glib::ustring str(getText()); - set_sensitive(false); Inkscape::SVGOStringStream os; os << str; write_to_xml(os.str().c_str()); - set_sensitive(true); _wr->setUpdating (false); } @@ -757,7 +756,6 @@ RegisteredRandom::RegisteredRandom ( const Glib::ustring& label, const Glib::ust init_parent(key, wr, repr_in, doc_in); setProgrammatically = false; - setRange (-1e6, 1e6); setDigits (2); setIncrements(0.1, 1.0); @@ -786,12 +784,10 @@ RegisteredRandom::on_value_changed() _wr->setUpdating (true); Inkscape::SVGOStringStream os; - os << getValue() << ';' << getStartSeed(); - - set_sensitive(false); + //Force exact 0 if decimals over to 10 + double val = getValue() < 1E-10 && getValue() > -1E-10?0.0:getValue(); + os << val << ';' << getStartSeed(); write_to_xml(os.str().c_str()); - set_sensitive(true); - _wr->setUpdating (false); } diff --git a/src/ui/widget/registered-widget.h b/src/ui/widget/registered-widget.h index f66d5cbf2..26f93ba7f 100644 --- a/src/ui/widget/registered-widget.h +++ b/src/ui/widget/registered-widget.h @@ -244,9 +244,8 @@ public: Registry& wr, Inkscape::XML::Node* repr_in = NULL, SPDocument *doc_in = NULL ); - protected: - sigc::connection _value_changed_connection; + sigc::connection _value_changed_connection; void on_value_changed(); }; diff --git a/src/ui/widget/scalar.cpp b/src/ui/widget/scalar.cpp index f8543a371..4d0edeac3 100644 --- a/src/ui/widget/scalar.cpp +++ b/src/ui/widget/scalar.cpp @@ -14,7 +14,6 @@ # include <config.h> #endif - #include "scalar.h" #include "spinbutton.h" #include <gtkmm/scale.h> @@ -30,6 +29,7 @@ Scalar::Scalar(Glib::ustring const &label, Glib::ustring const &tooltip, : Labelled(label, tooltip, new SpinButton(), suffix, icon, mnemonic), setProgrammatically(false) { + } Scalar::Scalar(Glib::ustring const &label, Glib::ustring const &tooltip, @@ -149,6 +149,10 @@ Glib::SignalProxy0<void> Scalar::signal_value_changed() return static_cast<SpinButton*>(_widget)->signal_value_changed(); } +Glib::SignalProxy<bool, GdkEventButton*> Scalar::signal_button_release_event() +{ + return static_cast<SpinButton*>(_widget)->signal_button_release_event(); +} } // namespace Widget } // namespace UI diff --git a/src/ui/widget/scalar.h b/src/ui/widget/scalar.h index f186f46ac..80acaba0e 100644 --- a/src/ui/widget/scalar.h +++ b/src/ui/widget/scalar.h @@ -78,7 +78,6 @@ public: Glib::ustring const &suffix = "", Glib::ustring const &icon = "", bool mnemonic = true); - /** * Fetches the precision of the spin buton. */ @@ -151,7 +150,10 @@ public: * Signal raised when the spin button's value changes. */ Glib::SignalProxy0<void> signal_value_changed(); - + /** + * Signal raised when the spin button's pressed. + */ + Glib::SignalProxy< bool, GdkEventButton* > signal_button_release_event(); /** * true if the value was set by setValue, not changed by the user; * if a callback checks it, it must reset it back to false. |
