1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-23 17:30:17 +01:00

Define and use SelectionStateChanger

This commit is contained in:
Paul Licameli
2017-06-11 09:59:23 -04:00
parent a594207265
commit 4da881d1db
4 changed files with 67 additions and 22 deletions

View File

@@ -13,6 +13,7 @@ class Track;
class TrackList;
class MixerBoard;
class ViewInfo;
#include <vector>
// State relating to the set of selected tracks
class SelectionState
@@ -37,7 +38,29 @@ public:
void TrackListUpdated( const TrackList &tracks );
private:
friend class SelectionStateChanger;
Track *mLastPickedTrack {};
};
// For committing or rolling-back of changes in selectedness of tracks.
// When rolling back, it is assumed that no tracks have been added or removed.
class SelectionStateChanger
{
public:
SelectionStateChanger( SelectionState &state, TrackList &tracks );
SelectionStateChanger( const SelectionStateChanger& ) = delete;
SelectionStateChanger &operator=( const SelectionStateChanger& ) = delete;
~SelectionStateChanger();
void Commit();
private:
SelectionState *mpState;
TrackList &mTracks;
Track *mInitialLastPickedTrack;
std::vector<bool> mInitialTrackSelection;
};
#endif