make all TimeAxisView derived types return PresentationInfo for sorting
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 2 Jun 2016 12:54:33 +0000 (08:54 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 2 Jun 2016 18:46:35 +0000 (14:46 -0400)
gtk2_ardour/automation_time_axis.cc
gtk2_ardour/automation_time_axis.h
gtk2_ardour/editor_drag.cc
gtk2_ardour/route_time_axis.cc
gtk2_ardour/route_time_axis.h
gtk2_ardour/time_axis_view.h
gtk2_ardour/vca_time_axis.cc
gtk2_ardour/vca_time_axis.h

index 9b5d99916427972b75f255e1036696cc952b1524..263073fc3b8ccdba52ee2e8197f167be88338715 100644 (file)
@@ -1038,3 +1038,9 @@ AutomationTimeAxisView::cut_copy_clear_one (AutomationLine& line, Selection& sel
                }
        }
 }
+
+PresentationInfo const &
+AutomationTimeAxisView::presentation_info () const
+{
+       return _route->presentation_info();
+}
index aef1300405c771c7aa9457d1fb9562848dd5087f..e1aa9e493186b2bc5807dd3c1dbf2a6cd21bf4f3 100644 (file)
@@ -73,6 +73,8 @@ class AutomationTimeAxisView : public TimeAxisView {
        void set_samples_per_pixel (double);
        std::string name() const { return _name; }
 
+       ARDOUR::PresentationInfo const & presentation_info () const;
+
         void add_automation_event (GdkEvent *, framepos_t, double, bool with_guard_points);
 
        void clear_lines ();
index c29fa230d44eac3997dfc55383c949ef384a2cf9..02e36d2bce5fcd94fe79ce45db1b9448ceb6d0c2 100644 (file)
@@ -527,22 +527,7 @@ Drag::add_midi_region (MidiTimeAxisView* view, bool commit)
 
 struct PresentationInfoTimeAxisViewSorter {
        bool operator() (TimeAxisView* a, TimeAxisView* b) {
-               RouteTimeAxisView* ra = dynamic_cast<RouteTimeAxisView*> (a);
-               RouteTimeAxisView* rb = dynamic_cast<RouteTimeAxisView*> (b);
-               /* anything not a route goes at the end */
-               if (!ra && rb) {
-                       return false;
-               }
-               if (!rb && ra) {
-                       return true;
-               }
-               if (!ra && !rb) {
-                       /* XXXX pointer comparison. Should use
-                       presentation_info in a time axis view
-                       */
-                       return a < b;
-               }
-               return ra->route()->presentation_info () < rb->route()->presentation_info();
+               return a->presentation_info() < b->presentation_info();
        }
 };
 
index 303824638ea38e94b5226c9daf219fb0390c4058..75ea85391c73e6919a83dc05e7934aae2a746125 100644 (file)
@@ -2924,3 +2924,9 @@ RouteTimeAxisView::remove_child (boost::shared_ptr<TimeAxisView> c)
                }
        }
 }
+
+PresentationInfo const &
+RouteTimeAxisView::presentation_info () const
+{
+       return _route->presentation_info();
+}
index 5e123f2fa7aeb864c21aec30b49b11f670b24984..37720e6f3a1dd459a58669135994a739a3c6b8d9 100644 (file)
@@ -75,16 +75,18 @@ class ItemCounts;
 class RouteTimeAxisView : public RouteUI, public TimeAxisView
 {
 public:
-       RouteTimeAxisView (PublicEditor&, ARDOUR::Session*, ArdourCanvas::Canvas& canvas);
-       virtual ~RouteTimeAxisView ();
+       RouteTimeAxisView (PublicEditor&, ARDOUR::Session*, ArdourCanvas::Canvas& canvas);
+       virtual ~RouteTimeAxisView ();
 
        void set_route (boost::shared_ptr<ARDOUR::Route>);
 
+       ARDOUR::PresentationInfo const & presentation_info () const;
+
        void show_selection (TimeSelection&);
        void set_button_names ();
 
        void set_samples_per_pixel (double);
-       void set_height (uint32_t h, TrackHeightMode m = OnlySelf);
+       void set_height (uint32_t h, TrackHeightMode m = OnlySelf);
        void show_timestretch (framepos_t start, framepos_t end, int layers, int layer);
        void hide_timestretch ();
        void selection_click (GdkEventButton*);
@@ -333,4 +335,3 @@ private:
 };
 
 #endif /* __ardour_route_time_axis_h__ */
-
index 4995c0e15e0d17ca23d93389e3950568122d4458..daef126406e19024678fa02f27978a373f2b5989 100644 (file)
@@ -39,7 +39,9 @@
 #include "pbd/signals.h"
 
 #include "ardour/types.h"
+#include "ardour/presentation_info.h"
 #include "ardour/region.h"
+
 #include "evoral/Parameter.hpp"
 
 #include "canvas/line.h"
@@ -102,6 +104,8 @@ class TimeAxisView : public virtual AxisView
 
        static void setup_sizes ();
 
+       virtual ARDOUR::PresentationInfo const & presentation_info () const = 0;
+
        /** @return index of this TimeAxisView within its parent */
        int order () const { return _order; }
 
index fc593369acaa0a8f43004eda4a874fc32f14dc19..742cbd412e08277f04cc9cbfa5e5d1dc43ce2684 100644 (file)
@@ -274,3 +274,9 @@ VCATimeAxisView::drop_release (GdkEventButton*)
 
        return true;
 }
+
+PresentationInfo const &
+VCATimeAxisView::presentation_info () const
+{
+       return _vca->presentation_info();
+}
index 42dd73f5b3ca7f4456f96a3bf5fa806e6bc01adb..9aa92a10061d5d50cc0510c614b5a08bd7e55aad 100644 (file)
@@ -39,6 +39,8 @@ class VCATimeAxisView : public TimeAxisView
        VCATimeAxisView (PublicEditor&, ARDOUR::Session*, ArdourCanvas::Canvas& canvas);
        virtual ~VCATimeAxisView ();
 
+       ARDOUR::PresentationInfo const & presentation_info () const;
+
        void set_vca (boost::shared_ptr<ARDOUR::VCA>);
        boost::shared_ptr<ARDOUR::VCA> vca() const { return _vca; }