diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour.bindings | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour.menus | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 33 |
5 files changed, 43 insertions, 2 deletions
diff --git a/gtk2_ardour/ardour.bindings b/gtk2_ardour/ardour.bindings index 8d280b536d..edac5ec4d0 100644 --- a/gtk2_ardour/ardour.bindings +++ b/gtk2_ardour/ardour.bindings @@ -110,6 +110,8 @@ ; (gtk_accel_path "<Actions>/Editor/toggle-xfades-visible" "") (gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket") (gtk_accel_path "<Actions>/Editor/scroll-backward" "leftarrow") +(gtk_accel_path "<Actions>/Editor/scroll-playhead-backward" "<Control>leftarrow") +(gtk_accel_path "<Actions>/Editor/scroll-playhead-forward" "<Control>rightarrow") (gtk_accel_path "<Actions>/Editor/start-range" "<Control>KP_Down") ; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsSemitones" "") ; (gtk_accel_path "<Actions>/JACK/JACKLatency128" "") diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index 7726add6ea..075a526693 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -203,6 +203,9 @@ <menuitem action='scroll-forward'/> <menuitem action='scroll-backward'/> <separator/> + <menuitem action='scroll-playhead-forward'/> + <menuitem action='scroll-playhead-backward'/> + <separator/> <menuitem action='ToggleWaveformVisibility'/> <menuitem action='ToggleWaveformsWhileRecording'/> <menuitem action='ToggleMeasureVisibility'/> diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index b09f76c9d9..eba23b9074 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -994,6 +994,7 @@ class Editor : public PublicEditor void edit_cursor_forward (); void playhead_backward (); void playhead_forward (); + void scroll_playhead (bool forward); void scroll_backward (float pages=0.8f); void scroll_forward (float pages=0.8f); void scroll_tracks_down (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index f99a828203..065c82c141 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -164,10 +164,12 @@ Editor::register_actions () ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (editor_actions, "center-edit-cursor", _("Center Edit Cursor"), mem_fun(*this, &Editor::center_edit_cursor)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (editor_actions, "playhead-forward", _("Playhead Forward"), mem_fun(*this, &Editor::playhead_forward)); + + act = ActionManager::register_action (editor_actions, "scroll-playhead-forward", _("Playhead forward"), bind (mem_fun(*this, &Editor::scroll_playhead), true));; ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (editor_actions, "playhead-backward", _("Playhead Backward"), mem_fun(*this, &Editor::playhead_backward)); + act = ActionManager::register_action (editor_actions, "scroll-playhead-backward", _("Playhead Backward"), bind (mem_fun(*this, &Editor::scroll_playhead), false)); ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_action (editor_actions, "playhead-to-edit", _("Playhead to Edit"), bind (mem_fun(*this, &Editor::cursor_align), true)); ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (editor_actions, "edit-to-playhead", _("Edit to Playhead"), bind (mem_fun(*this, &Editor::cursor_align), false)); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 5ab343392a..a4269a9bb6 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -757,6 +757,39 @@ Editor::cursor_to_selection_end (Cursor *cursor) } void +Editor::scroll_playhead (bool forward) +{ + nframes_t pos = playhead_cursor->current_frame; + nframes_t delta = (nframes_t) floor (current_page_frames() / 0.8); + + if (forward) { + if (pos == max_frames) { + return; + } + + if (pos < max_frames - delta) { + pos += delta ; + } else { + pos = max_frames; + } + + } else { + + if (pos == 0) { + return; + } + + if (pos > delta) { + pos -= delta; + } else { + pos = 0; + } + } + + session->request_locate (pos); +} + +void Editor::playhead_backward () { nframes_t pos; |