From d85b297ca5bf73cff5a65653021cc41447cf31b2 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Sat, 8 Jun 2019 12:18:04 -0400 Subject: [PATCH] TrackPanel listens for Undo events, doesn't intrude in ProjectHistory --- src/ProjectHistory.cpp | 5 ----- src/TrackPanel.cpp | 11 +++++++++++ src/TrackPanel.h | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/ProjectHistory.cpp b/src/ProjectHistory.cpp index 32eda7d83..32356d29a 100644 --- a/src/ProjectHistory.cpp +++ b/src/ProjectHistory.cpp @@ -15,7 +15,6 @@ Paul Licameli split from ProjectManager.cpp #include "ProjectFileIO.h" #include "Tags.h" #include "Track.h" -#include "TrackPanel.h" #include "UndoManager.h" #include "ViewInfo.h" #include "ondemand/ODComputeSummaryTask.h" @@ -183,12 +182,8 @@ void ProjectHistory::PopState(const UndoState &state) void ProjectHistory::SetStateTo(unsigned int n) { auto &project = mProject; - auto &trackPanel = TrackPanel::Get( project ); auto &undoManager = UndoManager::Get( project ); undoManager.SetStateTo(n, [this]( const UndoState &state ){ PopState(state); } ); - - trackPanel.SetFocusedTrack(NULL); - trackPanel.Refresh(false); } diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 4c6598ad6..1bbfc56c1 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -78,6 +78,8 @@ is time to refresh some aspect of the screen. #include "TrackPanelResizeHandle.h" //#define DEBUG_DRAW_TIMING 1 +#include "UndoManager.h" + #include "AColor.h" #include "AllThemeResources.h" #include "AudioIO.h" @@ -320,6 +322,8 @@ TrackPanel::TrackPanel(wxWindow * parent, wxWindowID id, theProject->Bind( EVT_PROJECT_SETTINGS_CHANGE, &TrackPanel::OnProjectSettingsChange, this); + theProject->Bind(EVT_UNDO_RESET, &TrackPanel::OnUndoReset, this); + UpdatePrefs(); } @@ -554,6 +558,13 @@ double TrackPanel::GetScreenEndTime() const return mViewInfo->PositionToTime(width, 0, true); } +void TrackPanel::OnUndoReset( wxCommandEvent &event ) +{ + event.Skip(); + SetFocusedTrack( nullptr ); + Refresh( false ); +} + /// AS: OnPaint( ) is called during the normal course of /// completing a repaint operation. void TrackPanel::OnPaint(wxPaintEvent & /* event */) diff --git a/src/TrackPanel.h b/src/TrackPanel.h index 4fd465a01..16ee53208 100644 --- a/src/TrackPanel.h +++ b/src/TrackPanel.h @@ -295,6 +295,8 @@ class AUDACITY_DLL_API TrackPanel final // Either argument may be NULL void GetTracksUsableArea(int *width, int *height) const; + void OnUndoReset( wxCommandEvent &event ); + void Refresh (bool eraseBackground = true, const wxRect *rect = (const wxRect *) NULL) override;