From 0b2d5729c57efd64e01c3f3d3f5d673d4443378c Mon Sep 17 00:00:00 2001 From: David Bailes Date: Fri, 24 Apr 2015 11:38:55 +0100 Subject: [PATCH] added two commands to move to first or last track --- src/Menus.cpp | 26 ++++++++++++++++++++------ src/Menus.h | 9 +++++++-- src/TrackPanel.cpp | 32 ++++++++++++++++++++++++++++++++ src/TrackPanel.h | 2 ++ 4 files changed, 61 insertions(+), 8 deletions(-) diff --git a/src/Menus.cpp b/src/Menus.cpp index 5bc6c4bfc..73cbc769f 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -1138,8 +1138,12 @@ void AudacityProject::CreateMenusAndCommands() TracksExistFlag | TrackPanelHasFocus); c->AddCommand(wxT("PrevTrack"), _("Move Focus to Previous Track"), FN(OnCursorUp), wxT("Up")); - c->AddCommand(wxT("ShiftUp"), _("Move Focus to Previous and Select"), FN(OnShiftUp), wxT("Shift+Up")); c->AddCommand(wxT("NextTrack"), _("Move Focus to Next Track"), FN(OnCursorDown), wxT("Down")); + c->AddCommand(wxT("FirstTrack"), _("Move Focus to First Track"), FN(OnFirstTrack), wxT("Ctrl+Home")); + c->AddCommand(wxT("LastTrack"), _("Move Focus to Last Track"), FN(OnLastTrack), wxT("Ctrl+End")); + + + c->AddCommand(wxT("ShiftUp"), _("Move Focus to Previous and Select"), FN(OnShiftUp), wxT("Shift+Up")); c->AddCommand(wxT("ShiftDown"), _("Move Focus to Next and Select"), FN(OnShiftDown), wxT("Shift+Down")); c->AddCommand(wxT("Toggle"), _("Toggle Focused Track"), FN(OnToggle), wxT("Return")); c->AddCommand(wxT("ToggleAlt"), _("Toggle Focused Track"), FN(OnToggle), wxT("NUMPAD_ENTER")); @@ -2491,16 +2495,26 @@ void AudacityProject::OnCursorUp() mTrackPanel->OnPrevTrack( false ); } -void AudacityProject::OnShiftUp() -{ - mTrackPanel->OnPrevTrack( true ); -} - void AudacityProject::OnCursorDown() { mTrackPanel->OnNextTrack( false ); } +void AudacityProject::OnFirstTrack() +{ + mTrackPanel->OnFirstTrack(); +} + +void AudacityProject::OnLastTrack() +{ + mTrackPanel->OnLastTrack(); +} + +void AudacityProject::OnShiftUp() +{ + mTrackPanel->OnPrevTrack( true ); +} + void AudacityProject::OnShiftDown() { mTrackPanel->OnNextTrack( true ); diff --git a/src/Menus.h b/src/Menus.h index 739ea8ead..d5531d574 100644 --- a/src/Menus.h +++ b/src/Menus.h @@ -123,11 +123,16 @@ void OnSetPlaySpeed(); void OnPlaySpeedInc(); void OnPlaySpeedDec(); - // Selection-Editing Commands + // Moving track focus commands void OnCursorUp(); -void OnShiftUp(); void OnCursorDown(); +void OnFirstTrack(); +void OnLastTrack(); + + // Selection-Editing Commands + +void OnShiftUp(); void OnShiftDown(); void OnToggle(); diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index efb9e7cc5..e1339d577 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -7894,6 +7894,38 @@ void TrackPanel::OnNextTrack( bool shift ) } } +void TrackPanel::OnFirstTrack() +{ + Track *t = GetFocusedTrack(); + if (!t) + return; + + TrackListIterator iter(mTracks); + Track *f = iter.First(); + if (t != f) + { + SetFocusedTrack(f); + MakeParentModifyState(false); + } + EnsureVisible(f); +} + +void TrackPanel::OnLastTrack() +{ + Track *t = GetFocusedTrack(); + if (!t) + return; + + TrackListIterator iter(mTracks); + Track *l = iter.Last(); + if (t != l) + { + SetFocusedTrack(l); + MakeParentModifyState(false); + } + EnsureVisible(l); +} + void TrackPanel::OnToggle() { Track *t; diff --git a/src/TrackPanel.h b/src/TrackPanel.h index cb60bc07c..bd643c8a5 100644 --- a/src/TrackPanel.h +++ b/src/TrackPanel.h @@ -219,6 +219,8 @@ class AUDACITY_DLL_API TrackPanel:public wxPanel { virtual void OnPrevTrack(bool shift = false); virtual void OnNextTrack(bool shift = false); + virtual void OnFirstTrack(); + virtual void OnLastTrack(); virtual void OnToggle(); virtual void OnCursorLeft(bool shift, bool ctrl, bool keyup = false);