API infrastructure for dragging region/cue markers

This commit is contained in:
Paul Davis 2021-05-24 12:26:21 -06:00
parent 2016710865
commit c2a012545b
4 changed files with 22 additions and 0 deletions

View file

@ -375,6 +375,7 @@ public:
}
void get_cue_markers (CueMarkers&, bool abs = false) const;
void move_cue_marker (CueMarker const &, samplepos_t region_relative_position);
protected:
virtual XMLNode& state ();

View file

@ -114,6 +114,7 @@ public:
CueMarkers const & cue_markers() const { return _cue_markers; }
void add_cue_marker (CueMarker const &);
void move_cue_marker (CueMarker const &, samplepos_t source_relative_position);
bool remove_cue_marker (CueMarker const &);
bool clear_cue_markers ();
PBD::Signal0<void> CueMarkersChanged;

View file

@ -1937,6 +1937,14 @@ Region::get_cue_markers (CueMarkers& cues, bool abs) const
}
}
void
Region::move_cue_marker (CueMarker const & cm, samplepos_t region_relative_position)
{
for (SourceList::const_iterator s = _sources.begin (); s != _sources.end(); ++s) {
(*s)->move_cue_marker (cm, start() + region_relative_position);
}
}
void
Region::drop_sources ()
{

View file

@ -420,6 +420,18 @@ Source::add_cue_marker (CueMarker const & cm)
CueMarkersChanged(); /* EMIT SIGNAL */
}
void
Source::move_cue_marker (CueMarker const & cm, samplepos_t source_relative_position)
{
if (source_relative_position > length (0)) {
return;
}
if (remove_cue_marker (cm)) {
add_cue_marker (CueMarker (cm.text(), source_relative_position));
}
}
bool
Source::remove_cue_marker (CueMarker const & cm)
{