X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fselection.h;h=7b0da04f82220549048a103047fc99394aa9f4f9;hb=9bfe404b4e9f5bc1bbe11b4ef6fd9778a362d04c;hp=c9f5eddb4fd9e07e60b40278be5dd48edb6f1b55;hpb=d21f20290515817cd7664301912184edb43c1845;p=ardour.git diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h index c9f5eddb4f..7b0da04f82 100644 --- a/gtk2_ardour/selection.h +++ b/gtk2_ardour/selection.h @@ -65,7 +65,7 @@ namespace Evoral { class Selection : public sigc::trackable, public PBD::ScopedConnectionList { - public: +public: enum SelectionType { Object = 0x1, Range = 0x2 @@ -90,12 +90,11 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList /** only used when this class is used as a cut buffer */ MidiNoteSelection midi_notes; - Selection (PublicEditor const * e); + Selection (PublicEditor const * e, bool manage_libardour_selection); // Selection& operator= (const Selection& other); sigc::signal RegionsChanged; - sigc::signal TracksChanged; sigc::signal TimeChanged; sigc::signal LinesChanged; sigc::signal PlaylistsChanged; @@ -104,8 +103,6 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList sigc::signal MidiNotesChanged; sigc::signal MidiRegionsChanged; - void block_tracks_changed (bool); - void clear (); /** check if all selections are empty @@ -116,10 +113,10 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList void dump_region_layers(); - bool selected (TimeAxisView*); - bool selected (RegionView*); - bool selected (ArdourMarker*); - bool selected (ControlPoint*); + bool selected (TimeAxisView*) const; + bool selected (RegionView*) const; + bool selected (ArdourMarker*) const; + bool selected (ControlPoint*) const; void set (std::list const &); void add (std::list const &); @@ -189,19 +186,19 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList void remove_regions (TimeAxisView *); - void move_time (framecnt_t); + void move_time (framecnt_t); void replace (uint32_t time_index, framepos_t start, framepos_t end); -/* - * A note about items in an editing Selection: - * At a high level, selections can include Tracks, Objects, or Time Ranges - * Range and Object selections are mutually exclusive. - * Selecting a Range will deselect all Objects, and vice versa. - * This is done to avoid confusion over what will happen in an operation such as Delete - * Tracks are somewhat orthogonal b/c editing operations don't apply to tracks. - * The Track selection isn't affected when ranges or objects are added. - */ + /* + * A note about items in an editing Selection: + * At a high level, selections can include Tracks, Objects, or Time Ranges + * Range and Object selections are mutually exclusive. + * Selecting a Range will deselect all Objects, and vice versa. + * This is done to avoid confusion over what will happen in an operation such as Delete + * Tracks are somewhat orthogonal b/c editing operations don't apply to tracks. + * The Track selection isn't affected when ranges or objects are added. + */ void clear_all() { clear_time(); clear_tracks(); clear_objects(); } @@ -226,12 +223,16 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList XMLNode& get_state () const; int set_state (XMLNode const &, int); - std::list > > > > pending_midi_note_selection; + std::list > > pending_midi_note_selection; - private: + void core_selection_changed (PBD::PropertyChange const & pc); + +private: PublicEditor const * editor; uint32_t next_time_id; - bool _no_tracks_changed; + bool manage_libardour_selection; + + TrackViewList add_grouped_tracks (TrackViewList const & t); }; bool operator==(const Selection& a, const Selection& b);