From cfeb7bced169f960e71275a90bfd6f3ad88e501c Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 19 Jul 2017 21:51:48 -0400 Subject: [PATCH] Zoom to fit after any import (labels, audio, or midi) --- src/Menus.cpp | 7 ++++--- src/Project.cpp | 19 +++++++++++++------ src/Project.h | 2 ++ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/Menus.cpp b/src/Menus.cpp index bda06ff5f..8613b261b 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -6733,6 +6733,8 @@ void AudacityProject::OnImport() Import(fileName); } + + ZoomAfterImport(nullptr); } void AudacityProject::OnImportLabels() @@ -6776,7 +6778,7 @@ void AudacityProject::OnImportLabels() Format(_("Imported labels from '%s'"), fileName.c_str()), _("Import Labels")); - RedrawProject(); + ZoomAfterImport(nullptr); } } @@ -6821,8 +6823,7 @@ AudacityProject *AudacityProject::DoImportMIDI( pProject->PushState(wxString::Format(_("Imported MIDI from '%s'"), fileName.c_str()), _("Import MIDI")); - pProject->RedrawProject(); - pProject->mTrackPanel->EnsureVisible(pTrack); + pProject->ZoomAfterImport(pTrack); pNewProject = nullptr; return pProject; } diff --git a/src/Project.cpp b/src/Project.cpp index ea95da363..be3c75463 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -463,6 +463,8 @@ public: for (const auto &name : sortednames) mProject->Import(name); + mProject->ZoomAfterImport(nullptr); + return true; } ); } @@ -4171,12 +4173,6 @@ void AudacityProject::AddImportedTracks(const wxString &fileName, wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_UI | wxEVT_CATEGORY_USER_INPUT); #endif - OnZoomFit(); - - mTrackPanel->SetFocus(); - mTrackPanel->EnsureVisible(mTrackPanel->GetFirstSelectedTrack()); - mTrackPanel->Refresh(false); - if (initiallyEmpty && mDirManager->GetProjectName() == wxT("")) { wxString name = fileName.AfterLast(wxFILE_SEP_PATH).BeforeLast(wxT('.')); mFileName =::wxPathOnly(fileName) + wxFILE_SEP_PATH + name + wxT(".aup"); @@ -4190,6 +4186,17 @@ void AudacityProject::AddImportedTracks(const wxString &fileName, newTracks.clear(); } +void AudacityProject::ZoomAfterImport(Track *pTrack) +{ + OnZoomFit(); + + mTrackPanel->SetFocus(); + RedrawProject(); + if (!pTrack) + pTrack = mTrackPanel->GetFirstSelectedTrack(); + mTrackPanel->EnsureVisible(pTrack); +} + // If pNewTrackList is passed in non-NULL, it gets filled with the pointers to NEW tracks. bool AudacityProject::Import(const wxString &fileName, WaveTrackArray* pTrackArray /*= NULL*/) { diff --git a/src/Project.h b/src/Project.h index e8a086a1e..3a8808a99 100644 --- a/src/Project.h +++ b/src/Project.h @@ -265,6 +265,8 @@ public: // If pNewTrackList is passed in non-NULL, it gets filled with the pointers to NEW tracks. bool Import(const wxString &fileName, WaveTrackArray *pTrackArray = NULL); + void ZoomAfterImport(Track *pTrack); + void AddImportedTracks(const wxString &fileName, TrackHolders &&newTracks);