, _controllable(ac)
, _adjustment(adj)
, _ignore_change(false)
+ , _grabbed(false)
{
if (ac->toggled()) {
ArdourButton* but = manage(new ArdourButton());
{
double const interface_value = _controllable->internal_to_interface(_controllable->get_value());
+ if (_grabbed) {
+ /* we cannot use _controllable->touching() here
+ * because that's only set in Write or Touch mode.
+ * Besides ctrl-surfaces may also set touching()
+ */
+ return;
+ }
if (_adjustment->get_value () != interface_value) {
_ignore_change = true;
_adjustment->set_value (interface_value);
void
AutomationController::start_touch()
{
+ _grabbed = true;
_controllable->start_touch (_controllable->session().transport_sample());
}
AutomationController::end_touch ()
{
_controllable->stop_touch (_controllable->session().transport_sample());
+ if (_grabbed) {
+ _grabbed = false;
+ display_effective_value ();
+ }
}
bool