chris goddard's region list patch; port 2.X marker drag/move changes to 3.0; compilat...
[ardour.git] / gtk2_ardour / selection.cc
index 2f9601fceca5355373c420acfa97f6f6ba3eb0ff..3f6c282d3afbfd6f018fc7e721e670baa7af200c 100644 (file)
@@ -608,6 +608,12 @@ Selection::set (boost::shared_ptr<Evoral::ControlList> ac)
        add (ac);
 }
 
+bool
+Selection::selected (Marker* m)
+{
+       return find (markers.begin(), markers.end(), m) != markers.end();
+}
+
 bool
 Selection::selected (TimeAxisView* tv)
 {
@@ -801,3 +807,31 @@ Selection::add (Marker* m)
                MarkersChanged();
        }
 }
+
+void
+Selection::add (const list<Marker*>& m)
+{
+       markers.insert (markers.end(), m.begin(), m.end());
+       MarkersChanged ();
+}
+
+void
+MarkerSelection::range (nframes64_t& s, nframes64_t& e)
+{
+       s = max_frames;
+       e = 0;
+
+       for (MarkerSelection::iterator i = begin(); i != end(); ++i) {
+
+               if ((*i)->position() < s) {
+                       s = (*i)->position();
+               } 
+
+               if ((*i)->position() > e) {
+                       e = (*i)->position();
+               }
+       }
+
+       s = std::min (s, e);
+       e = std::max (s, e);
+}