diff options
author | Ben Loftis <ben@harrisonconsoles.com> | 2014-07-02 16:56:30 -0500 |
---|---|---|
committer | Ben Loftis <ben@harrisonconsoles.com> | 2014-07-02 17:35:37 -0500 |
commit | 0f1c7b1d71078a25c1df80e7c95d59229f613414 (patch) | |
tree | 45c55231f6bc28e0da22b14290475fbe596d1cb1 /gtk2_ardour/editor_keys.cc | |
parent | 007664c3dbd62f81cc32b10f54240df5182ad103 (diff) |
start-range and finish-range should graphically show the range being created. also add bindings for comma and period in addition to existing bindings which require a numpad. the old ones are now alternates. all primary functionality should appear on the qwerrty, and the numpad should be considered an ergonomic redundant alternative if you have one
Diffstat (limited to 'gtk2_ardour/editor_keys.cc')
-rw-r--r-- | gtk2_ardour/editor_keys.cc | 72 |
1 files changed, 71 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_keys.cc b/gtk2_ardour/editor_keys.cc index 93eba4b79f..2900e28c2a 100644 --- a/gtk2_ardour/editor_keys.cc +++ b/gtk2_ardour/editor_keys.cc @@ -37,10 +37,80 @@ using namespace ARDOUR; using namespace PBD; +using namespace Editing; void Editor::keyboard_selection_finish (bool add) { + if (_session) { + + framepos_t start = selection->time.start(); + framepos_t end; + + if ((_edit_point == EditAtPlayhead) && _session->transport_rolling()) { + end = _session->audible_frame(); + } else { + end = get_preferred_edit_position(); + } + + //snap the selection start/end + snap_to(start); + + //if no tracks are selected and we're working from the keyboard, enable all tracks (_something_ has to be selected for any range selection) + if ( (_edit_point == EditAtPlayhead) && selection->tracks.empty() ) + select_all_tracks(); + + selection->set (start, end); + + //if session is playing a range, cancel that +// if (_session->get_play_range()) +// _session->request_cancel_play_range(); + + } +} + +void +Editor::keyboard_selection_begin () +{ + if (_session) { + + framepos_t start; + framepos_t end = selection->time.end_frame(); //0 if no current selection + + if ((_edit_point == EditAtPlayhead) && _session->transport_rolling()) { + start = _session->audible_frame(); + } else { + start = get_preferred_edit_position(); + } + + //snap the selection start/end + snap_to(start); + + //if there's not already a sensible selection endpoint, go "forever" + if ( start > end ) { + end = max_framepos; + } + + //if no tracks are selected and we're working from the keyboard, enable all tracks (_something_ has to be selected for any range selection) + if ( selection->tracks.empty() ) + select_all_tracks(); + + selection->set (start, end); + + //if session is playing a range, cancel that + if (_session->get_play_range()) + _session->request_transport_speed ( 1.0 ); + + //if join playhead, locate to the newly selected start +// if ( !_session->transport_rolling() && Config->get_join_play_range() ) +// _session->request_cancel_play_range(); + } +} + +/* +void +Editor::keyboard_selection_finish (bool add) +{ if (_session && have_pending_keyboard_selection) { framepos_t end; @@ -82,7 +152,7 @@ Editor::keyboard_selection_begin () } } -} +}*/ void Editor::keyboard_paste () |