13
0

Special case horizontal faders (pan to right)

This commit is contained in:
Robin Gareus 2019-10-07 05:11:33 +02:00
parent c663a2d8ef
commit 647103c825
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -146,14 +146,17 @@ AutomationController::create(const Evoral::Parameter& param,
boost::shared_ptr<AutomationControl> ac, boost::shared_ptr<AutomationControl> ac,
bool use_knob) bool use_knob)
{ {
const double lo = ac->internal_to_interface(desc.lower); const double lo = ac->internal_to_interface(desc.lower, true);
const double up = ac->internal_to_interface(desc.upper); const double up = ac->internal_to_interface(desc.upper, true);
const double normal = ac->internal_to_interface(desc.normal); const double normal = ac->internal_to_interface(desc.normal, true);
const double smallstep = ac->internal_to_interface(desc.lower + desc.smallstep) - lo; const double smallstep = fabs (ac->internal_to_interface(desc.lower + desc.smallstep, true) - lo);
const double largestep = ac->internal_to_interface(desc.lower + desc.largestep) - lo; const double largestep = fabs (ac->internal_to_interface(desc.lower + desc.largestep, true) - lo);
assert (std::min(lo, up) == 0);
assert (std::max(lo, up) == 1.0);
Gtk::Adjustment* adjustment = manage ( Gtk::Adjustment* adjustment = manage (
new Gtk::Adjustment (normal, lo, up, smallstep, largestep)); new Gtk::Adjustment (normal, std::min(lo, up), std::max(lo, up), smallstep, largestep));
assert (ac); assert (ac);
assert(ac->parameter() == param); assert(ac->parameter() == param);
@ -170,7 +173,7 @@ AutomationController::automation_state_changed ()
void void
AutomationController::display_effective_value () AutomationController::display_effective_value ()
{ {
double const interface_value = _controllable->internal_to_interface(_controllable->get_value()); double const interface_value = _controllable->internal_to_interface(_controllable->get_value(), true);
if (_grabbed) { if (_grabbed) {
/* we cannot use _controllable->touching() here /* we cannot use _controllable->touching() here
@ -191,7 +194,7 @@ void
AutomationController::value_adjusted () AutomationController::value_adjusted ()
{ {
if (!_ignore_change) { if (!_ignore_change) {
const double new_val = _controllable->interface_to_internal(_adjustment->get_value()); const double new_val = _controllable->interface_to_internal(_adjustment->get_value(), true);
if (_controllable->user_double() != new_val) { if (_controllable->user_double() != new_val) {
_controllable->set_value (new_val, Controllable::NoGroup); _controllable->set_value (new_val, Controllable::NoGroup);
} }