diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-01-31 11:17:23 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-01-31 11:17:23 -0500 |
commit | 6780b7eb541ad8406fcb8633920b2074a1908a28 (patch) | |
tree | 36d3f43e08f9128edbea63114862f553fd754c04 /libs/surfaces/mackie/mcp_buttons.cc | |
parent | b78be4d7050091143d5b5e71681a36995ff3e496 (diff) |
mackie: make nudge work as modifier and on its own
Diffstat (limited to 'libs/surfaces/mackie/mcp_buttons.cc')
-rw-r--r-- | libs/surfaces/mackie/mcp_buttons.cc | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index d06cd2907d..8528975eb5 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -509,6 +509,8 @@ MackieControlProtocol::rewind_press (Button &) { if (modifier_state() & MODIFIER_MARKER) { prev_marker (); + } else if (modifier_state() & MODIFIER_NUDGE) { + gui_invoke ("Editor/nudge-playhead-backward"); } else if (main_modifier_state() == MODIFIER_SHIFT) { goto_start (); } else { @@ -528,6 +530,8 @@ MackieControlProtocol::ffwd_press (Button &) { if (modifier_state() & MODIFIER_MARKER) { next_marker (); + } else if (modifier_state() & MODIFIER_NUDGE) { + gui_invoke ("Editor/nudge-playhead-forward"); } else if (main_modifier_state() == MODIFIER_SHIFT) { goto_end(); } else { @@ -1018,12 +1022,26 @@ MackieControlProtocol::grp_release (Mackie::Button&) Mackie::LedState MackieControlProtocol::nudge_press (Mackie::Button&) { - return none; + _modifier_state |= MODIFIER_NUDGE; + nudge_modifier_consumed_by_button = false; + return on; } Mackie::LedState MackieControlProtocol::nudge_release (Mackie::Button&) { - return none; + _modifier_state &= ~MODIFIER_NUDGE; + + /* XXX these action names are stupid, because the action can affect + * regions, markers or the playhead depending on selection state. + */ + + if (main_modifier_state() & MODIFIER_SHIFT) { + gui_invoke ("Region/nudge-backward"); + } else { + gui_invoke ("Region/nudge-forward"); + } + + return off; } Mackie::LedState MackieControlProtocol::replace_press (Mackie::Button&) |