summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2017-12-04 17:24:16 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2017-12-04 17:24:16 +0000
commit25e5f4d5c57be30b7947a16867b5a6044a892f52 (patch)
tree0af8a9bcd9207bc78cb0882721dfd3b79db1aefb /src
parentMerge branch 'transupdate-master' of gitlab.com:Moini/inkscape (diff)
downloadinkscape-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.cpp11
-rw-r--r--src/live_effects/parameter/parameter.h2
-rw-r--r--src/live_effects/parameter/point.cpp6
-rw-r--r--src/live_effects/parameter/point.h1
-rw-r--r--src/live_effects/parameter/random.cpp7
-rw-r--r--src/live_effects/parameter/random.h1
-rw-r--r--src/ui/widget/registered-widget.cpp24
-rw-r--r--src/ui/widget/registered-widget.h3
-rw-r--r--src/ui/widget/scalar.cpp6
-rw-r--r--src/ui/widget/scalar.h6
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.