From ddfc37e42a27e31f6916100c5bbc3f04ba104522 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 26 Mar 2018 13:56:50 -0400 Subject: fix binding to long-press for User button on FaderPort --- libs/surfaces/faderport/faderport.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 962678735e..9896997640 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -364,6 +364,9 @@ FaderPort::button_handler (MIDI::Parser &, MIDI::EventTwoBytes* tb) break; case User: bs = UserDown; + if (tb->value) { + start_press_timeout (button, id); + } break; case FaderTouch: fader_is_touched = tb->value; @@ -966,6 +969,13 @@ FaderPort::Button::set_action (string const& name, bool when_pressed, FaderPort: if (name.empty()) { on_release.erase (bs); } 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)); todo.action_name = name; on_release[bs] = todo; -- cgit v1.2.3