mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-29 06:38:38 +02:00
ProjectWindow listens for undo events, intrudes less in other code
This commit is contained in:
parent
e17fc86c23
commit
5eaf0a649b
@ -15,7 +15,6 @@ Paul Licameli split from ProjectManager.cpp
|
||||
#include "Project.h"
|
||||
#include "ProjectFileIO.h"
|
||||
#include "ProjectSettings.h"
|
||||
#include "ProjectWindow.h"
|
||||
#include "Tags.h"
|
||||
#include "Track.h"
|
||||
#include "TrackPanel.h"
|
||||
@ -147,7 +146,6 @@ void ProjectHistory::PopState(const UndoState &state)
|
||||
auto &projectFileIO = ProjectFileIO::Get( project );
|
||||
auto &dstTracks = TrackList::Get( project );
|
||||
auto &viewInfo = ViewInfo::Get( project );
|
||||
auto &window = ProjectWindow::Get( project );
|
||||
|
||||
viewInfo.selectedRegion = state.selectedRegion;
|
||||
|
||||
@ -192,8 +190,6 @@ void ProjectHistory::PopState(const UndoState &state)
|
||||
if(odUsed)
|
||||
ODManager::Instance()->AddNewTask(std::move(computeTask));
|
||||
|
||||
window.HandleResize();
|
||||
|
||||
MenuManager::Get( project ).UpdateMenus();
|
||||
|
||||
projectFileIO.AutoSave();
|
||||
@ -204,12 +200,10 @@ void ProjectHistory::SetStateTo(unsigned int n)
|
||||
auto &project = mProject;
|
||||
auto &trackPanel = TrackPanel::Get( project );
|
||||
auto &undoManager = UndoManager::Get( project );
|
||||
auto &window = ProjectWindow::Get( project );
|
||||
|
||||
undoManager.SetStateTo(n,
|
||||
[this]( const UndoState &state ){ PopState(state); } );
|
||||
|
||||
window.HandleResize();
|
||||
trackPanel.SetFocusedTrack(NULL);
|
||||
trackPanel.Refresh(false);
|
||||
MenuManager::Get( project ).ModifyUndoMenuItems( project );
|
||||
|
@ -21,6 +21,7 @@ Paul Licameli split from AudacityProject.cpp
|
||||
#include "RefreshCode.h"
|
||||
#include "TrackPanel.h"
|
||||
#include "TrackPanelMouseEvent.h"
|
||||
#include "UndoManager.h"
|
||||
#include "ViewInfo.h"
|
||||
#include "WaveClip.h"
|
||||
#include "WaveTrack.h"
|
||||
@ -642,6 +643,9 @@ ProjectWindow::ProjectWindow(wxWindow * parent, wxWindowID id,
|
||||
mMainPage = pPage;
|
||||
|
||||
mPlaybackScroller = std::make_unique<PlaybackScroller>( &project );
|
||||
|
||||
project.Bind( EVT_UNDO_OR_REDO, &ProjectWindow::OnUndoRedo, this );
|
||||
project.Bind( EVT_UNDO_RESET, &ProjectWindow::OnUndoReset, this );
|
||||
}
|
||||
|
||||
void ProjectWindow::Init()
|
||||
@ -1436,6 +1440,20 @@ void ProjectWindow::OnToolBarUpdate(wxCommandEvent & event)
|
||||
event.Skip(false); /* No need to propagate any further */
|
||||
}
|
||||
|
||||
void ProjectWindow::OnUndoRedo( wxCommandEvent &evt )
|
||||
{
|
||||
evt.Skip();
|
||||
HandleResize();
|
||||
CallAfter( [this]{ RedrawProject(); } );
|
||||
}
|
||||
|
||||
void ProjectWindow::OnUndoReset( wxCommandEvent &evt )
|
||||
{
|
||||
evt.Skip();
|
||||
HandleResize();
|
||||
// CallAfter( [this]{ RedrawProject(); } ); // Should we do this here too?
|
||||
}
|
||||
|
||||
void ProjectWindow::OnScroll(wxScrollEvent & WXUNUSED(event))
|
||||
{
|
||||
auto &project = mProject;
|
||||
|
@ -155,6 +155,8 @@ public:
|
||||
void DoScroll();
|
||||
void OnScroll(wxScrollEvent & event);
|
||||
void OnToolBarUpdate(wxCommandEvent & event);
|
||||
void OnUndoRedo( wxCommandEvent & );
|
||||
void OnUndoReset( wxCommandEvent & );
|
||||
|
||||
bool mbInitializingScrollbar{ false };
|
||||
|
||||
|
@ -253,8 +253,6 @@ void DoUndo(AudacityProject &project)
|
||||
|
||||
trackPanel.EnsureVisible(trackPanel.GetFirstSelectedTrack());
|
||||
|
||||
window.RedrawProject();
|
||||
|
||||
MenuManager::ModifyUndoMenuItems(project);
|
||||
}
|
||||
|
||||
@ -289,8 +287,6 @@ void OnRedo(const CommandContext &context)
|
||||
|
||||
trackPanel.EnsureVisible(trackPanel.GetFirstSelectedTrack());
|
||||
|
||||
window.RedrawProject();
|
||||
|
||||
MenuManager::ModifyUndoMenuItems(project);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user