summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_keys.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2014-07-02 16:56:30 -0500
committerBen Loftis <ben@harrisonconsoles.com>2014-07-02 17:35:37 -0500
commit0f1c7b1d71078a25c1df80e7c95d59229f613414 (patch)
tree45c55231f6bc28e0da22b14290475fbe596d1cb1 /gtk2_ardour/editor_keys.cc
parent007664c3dbd62f81cc32b10f54240df5182ad103 (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.cc72
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 ()