diff options
author | David Robillard <d@drobilla.net> | 2007-07-04 01:29:33 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-07-04 01:29:33 +0000 |
commit | b7c5e24f4a10558942cde30c3cc4eb995846df3d (patch) | |
tree | 21eb622a75d375d3254a9584990b40c55a0b704c /src/libs/gui/ControlGroups.cpp | |
parent | c6b1d62cdb416a0a0c9dd94936e44545f23a688c (diff) | |
download | ingen-b7c5e24f4a10558942cde30c3cc4eb995846df3d.tar.gz ingen-b7c5e24f4a10558942cde30c3cc4eb995846df3d.tar.bz2 ingen-b7c5e24f4a10558942cde30c3cc4eb995846df3d.zip |
Allow setting control values out of range.
Move to glade-3 (files hopefully compatible?).
git-svn-id: http://svn.drobilla.net/lad/ingen@567 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/gui/ControlGroups.cpp')
-rw-r--r-- | src/libs/gui/ControlGroups.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/libs/gui/ControlGroups.cpp b/src/libs/gui/ControlGroups.cpp index 4de4e0c6..2d68492c 100644 --- a/src/libs/gui/ControlGroups.cpp +++ b/src/libs/gui/ControlGroups.cpp @@ -17,6 +17,7 @@ #include <cmath> #include <iostream> +#include <algorithm> #include "interface/EngineInterface.h" #include "client/PluginModel.h" #include "client/NodeModel.h" @@ -27,8 +28,7 @@ #include "GladeFactory.h" #include "App.h" -using std::cerr; using std::cout; using std::endl; - +using namespace std; using namespace Ingen::Client; namespace Ingen { @@ -140,7 +140,7 @@ SliderControlGroup::init(ControlPanel* panel, SharedPtr<PortModel> pm) _slider->set_increments(0, 0); _slider->set_range(min, max); - _value_spinner->set_range(min, max); + //_value_spinner->set_range(min, max); set_value(pm->value()); @@ -179,8 +179,14 @@ SliderControlGroup::set_value(float val) { _enable_signal = false; if (_enabled) { - if (_slider->get_value() != val) + if (_slider->get_value() != val) { + const Gtk::Adjustment* range = _slider->get_adjustment(); + const float lower = range->get_lower(); + const float upper = range->get_upper(); + if (val < lower || val > upper) + set_range(min(lower, val), max(lower, val)); _slider->set_value(val); + } if (_value_spinner->get_value() != val) _value_spinner->set_value(val); } @@ -192,7 +198,7 @@ void SliderControlGroup::set_range(float min, float max) { _slider->set_range(min, max); - _value_spinner->set_range(min, max); + //_value_spinner->set_range(min, max); } @@ -248,17 +254,8 @@ SliderControlGroup::update_value_from_spinner() if (_enable_signal) { _enable_signal = false; const float value = _value_spinner->get_value(); - - /*if (value < _min_spinner->get_value()) { - _min_spinner->set_value(value); - _slider->set_range(_min_spinner->get_value(), _max_spinner->get_value()); - } - if (value > _max_spinner->get_value()) { - _max_spinner->set_value(value); - _slider->set_range(_min_spinner->get_value(), _max_spinner->get_value()); - }*/ - _slider->set_value(value); + set_value(value); _control_panel->value_changed(_port_model, value); |