summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/parameter/parameter.cpp12
-rw-r--r--src/live_effects/parameter/parameter.h3
2 files changed, 12 insertions, 3 deletions
diff --git a/src/live_effects/parameter/parameter.cpp b/src/live_effects/parameter/parameter.cpp
index 70adc3084..64464f200 100644
--- a/src/live_effects/parameter/parameter.cpp
+++ b/src/live_effects/parameter/parameter.cpp
@@ -41,8 +41,6 @@ void
Parameter::param_write_to_repr(const char * svgd)
{
param_effect->getRepr()->setAttribute(param_key.c_str(), svgd);
- DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT,
- _("Updated value to scalar parameter"));
}
void Parameter::write_to_SVG(void)
@@ -73,6 +71,7 @@ ScalarParam::ScalarParam( const Glib::ustring& label, const Glib::ustring& tip,
ScalarParam::~ScalarParam()
{
+ _value_changed_connection.disconnect();
}
bool
@@ -146,6 +145,13 @@ ScalarParam::param_make_integer(bool yes)
inc_page = 10;
}
+void
+ScalarParam::on_value_changed()
+{
+ DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT,
+ _("Change scalar parameter"));
+}
+
Gtk::Widget *
ScalarParam::param_newWidget()
{
@@ -162,7 +168,7 @@ ScalarParam::param_newWidget()
}
rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change scalar parameter"));
-
+ _value_changed_connection = rsu->signal_value_changed().connect (sigc::mem_fun (*this, &ScalarParam::on_value_changed));
return dynamic_cast<Gtk::Widget *> (rsu);
}
diff --git a/src/live_effects/parameter/parameter.h b/src/live_effects/parameter/parameter.h
index cc2c4f3d6..c24033c42 100644
--- a/src/live_effects/parameter/parameter.h
+++ b/src/live_effects/parameter/parameter.h
@@ -12,6 +12,7 @@
#include <glibmm/ustring.h>
#include <2geom/forward.h>
#include <2geom/pathvector.h>
+#include <sigc++/sigc++.h>
// In gtk2, this wasn't an issue; we could toss around
// G_MAXDOUBLE and not worry about size allocations. But
@@ -111,6 +112,7 @@ public:
virtual void param_set_default();
void param_set_value(gdouble val);
void param_make_integer(bool yes = true);
+ void on_value_changed();
void param_set_range(gdouble min, gdouble max);
void param_set_digits(unsigned digits);
void param_set_increments(double step, double page);
@@ -122,6 +124,7 @@ public:
inline operator gdouble() const { return value; };
protected:
+ sigc::connection _value_changed_connection;
gdouble value;
gdouble min;
gdouble max;