13
0

fix binding to long-press for User button on FaderPort

This commit is contained in:
Paul Davis 2018-03-26 13:56:50 -04:00
parent a4df6e565b
commit ddfc37e42a

View File

@ -364,6 +364,9 @@ FaderPort::button_handler (MIDI::Parser &, MIDI::EventTwoBytes* tb)
break; break;
case User: case User:
bs = UserDown; bs = UserDown;
if (tb->value) {
start_press_timeout (button, id);
}
break; break;
case FaderTouch: case FaderTouch:
fader_is_touched = tb->value; fader_is_touched = tb->value;
@ -966,6 +969,13 @@ FaderPort::Button::set_action (string const& name, bool when_pressed, FaderPort:
if (name.empty()) { if (name.empty()) {
on_release.erase (bs); on_release.erase (bs);
} else { } else {
if (id == User) {
/* if the binding is for the User button, we
need to store the button state as it will be
seen on button release, which will include UserDown.
*/
bs = FaderPort::ButtonState (bs|UserDown);
}
DEBUG_TRACE (DEBUG::FaderPort, string_compose ("set button %1 to action %2 on release + %3%4%5\n", id, name, bs)); DEBUG_TRACE (DEBUG::FaderPort, string_compose ("set button %1 to action %2 on release + %3%4%5\n", id, name, bs));
todo.action_name = name; todo.action_name = name;
on_release[bs] = todo; on_release[bs] = todo;