From 1c97ea40ba7b2affbb14fe2b6a4ab6bffb2ae67d Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 21 Dec 2008 17:31:15 +0000 Subject: Don't allow setting port range to values that don't include the current port value (fix #298. again.) git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1888 a436a847-0d15-0410-975c-d299462d15a1 --- src/gui/PortPropertiesWindow.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/gui/PortPropertiesWindow.cpp b/src/gui/PortPropertiesWindow.cpp index aa5f8060..89d17154 100644 --- a/src/gui/PortPropertiesWindow.cpp +++ b/src/gui/PortPropertiesWindow.cpp @@ -106,9 +106,15 @@ PortPropertiesWindow::variable_change(const string& key, const Atom& value) void PortPropertiesWindow::min_changed() { - const float min = _min_spinner->get_value(); - float max = _max_spinner->get_value(); + const float val = _port_model->value().get_float(); + float min = _min_spinner->get_value(); + float max = _max_spinner->get_value(); + if (min > val) { + _min_spinner->set_value(val); + return; // avoid recursion + } + if (max <= min) { max = min + 1.0; _max_spinner->set_value(max); @@ -122,9 +128,15 @@ PortPropertiesWindow::min_changed() void PortPropertiesWindow::max_changed() { - float min = _min_spinner->get_value(); - const float max = _max_spinner->get_value(); + const float val = _port_model->value().get_float(); + float min = _min_spinner->get_value(); + float max = _max_spinner->get_value(); + if (max < val) { + _max_spinner->set_value(val); + return; // avoid recursion + } + if (min >= max) { min = max - 1.0; _min_spinner->set_value(min); -- cgit v1.2.1