fix select-all-regions-within (it used to select everything overlapped)
[ardour.git] / gtk2_ardour / streamview.cc
index de94c70060b58c9fb05be794e8d2d4796945b0aa..1d50a06a2ef6b4bf3d27a1f862e702cf7e958cc2 100644 (file)
@@ -548,7 +548,7 @@ StreamView::set_selected_regionviews (RegionSelection& regions)
  *  @param result Filled in with selectable things.
  */
 void
-StreamView::get_selectables (framepos_t start, framepos_t end, double top, double bottom, list<Selectable*>& results)
+StreamView::get_selectables (framepos_t start, framepos_t end, double top, double bottom, list<Selectable*>& results, bool within)
 {
        if (_trackview.editor().internal_editing()) {
                return;  // Don't select regions with an internal tool
@@ -584,10 +584,17 @@ StreamView::get_selectables (framepos_t start, framepos_t end, double top, doubl
                        layer_t const l = (*i)->region()->layer ();
                        layer_ok = (min_layer <= l && l <= max_layer);
                }
-
-               if ((*i)->region()->coverage (start, end) != Evoral::OverlapNone && layer_ok) {
-                       results.push_back (*i);
+               
+               if (within) {
+                       if ((*i)->region()->coverage (start, end) == Evoral::OverlapExternal && layer_ok) {
+                               results.push_back (*i);
+                       }
+               } else {
+                       if ((*i)->region()->coverage (start, end) != Evoral::OverlapNone && layer_ok) {
+                               results.push_back (*i);
+                       }
                }
+               
        }
 }