Cleanup of region drag code to be a bit more efficient and shorter. Fixes crashes...
[ardour.git] / gtk2_ardour / region_selection.cc
index 30f6dfb565af74a05583d627e78a6adb62670aed..1a5a556514eabc209fa7238511a001e0bceca5ee 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "ardour/region.h"
 
+#include "gui_thread.h"
 #include "region_view.h"
 #include "region_selection.h"
 #include "time_axis_view.h"
@@ -32,7 +33,7 @@ using namespace PBD;
  */
 RegionSelection::RegionSelection ()
 {
-       death_connection = RegionView::RegionViewGoingAway.connect (boost::bind (&RegionSelection::remove_it, this, _1));
+       RegionView::RegionViewGoingAway.connect (death_connection, MISSING_INVALIDATOR, ui_bind (&RegionSelection::remove_it, this, _1), gui_context());
 
        _current_start = 0;
        _current_end = 0;
@@ -44,7 +45,7 @@ RegionSelection::RegionSelection ()
 RegionSelection::RegionSelection (const RegionSelection& other)
        : std::list<RegionView*>()
 {
-       death_connection = RegionView::RegionViewGoingAway.connect (boost::bind (&RegionSelection::remove_it, this, _1));
+       RegionView::RegionViewGoingAway.connect (death_connection, MISSING_INVALIDATOR, ui_bind (&RegionSelection::remove_it, this, _1), gui_context());
 
        _current_start = other._current_start;
        _current_end = other._current_end;
@@ -252,10 +253,10 @@ struct RegionSortByTrack {
 
            /* really, track and position */
 
-           if (a->get_trackview().order() == b->get_trackview().order()) {
+           if (a->get_time_axis_view().order() == b->get_time_axis_view().order()) {
                    return a->region()->position() < b->region()->position();
            } else {
-                   return a->get_trackview().order() < b->get_trackview().order();
+                   return a->get_time_axis_view().order() < b->get_time_axis_view().order();
            }
     }
 };
@@ -297,7 +298,7 @@ bool
 RegionSelection::involves (const TimeAxisView& tv) const
 {
        for (RegionSelection::const_iterator i = begin(); i != end(); ++i) {
-               if (&(*i)->get_trackview() == &tv) {
+               if (&(*i)->get_time_axis_view() == &tv) {
                        return true;
                }
        }