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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user