fixes for endemic (compiler?) issues with virtual inheritance of sigc::trackable...
[ardour.git] / gtk2_ardour / crossfade_view.cc
index 49fe40ca63685a03bc9c7e41d43d1e2b0a44a4cc..e8a97c4cf465d76acc0ec42ba24dd937eda9da05 100644 (file)
@@ -89,7 +89,7 @@ CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent,
 
 CrossfadeView::~CrossfadeView ()
 {
-        GoingAway (this) ; /* EMIT_SIGNAL */
+       GoingAway (this) ; /* EMIT_SIGNAL */
 }
 
 void
@@ -108,8 +108,8 @@ CrossfadeView::reset_width_dependent_items (double pixel_width)
 void
 CrossfadeView::set_height (double height)
 {
-       if (height == TimeAxisView::Smaller ||
-               height == TimeAxisView::Small)
+       if (height == TimeAxisView::hSmaller ||
+           height == TimeAxisView::hSmall)
                TimeAxisViewItem::set_height (height - 3 );
        else
                TimeAxisViewItem::set_height (height - NAME_HIGHLIGHT_SIZE - 3 );
@@ -127,6 +127,10 @@ CrossfadeView::crossfade_changed (Change what_changed)
                set_duration (crossfade.overlap_length(), this);
                need_redraw_curves = true;
        }
+
+       if (what_changed & Crossfade::FollowOverlapChanged) {
+               need_redraw_curves = true;
+       }
        
        if (what_changed & Crossfade::ActiveChanged) {
                /* calls redraw_curves */
@@ -142,21 +146,25 @@ CrossfadeView::redraw_curves ()
        Points* points; 
        int32_t npoints;
        float* vec;
-       
        double h;
 
+       if (!crossfade.following_overlap()) {
+               /* curves should not be visible */
+               fade_in->hide ();
+               fade_out->hide ();
+               return;
+       }
+
        /*
         At "height - 3.0" the bottom of the crossfade touches the name highlight or the bottom of the track (if the
         track is either Small or Smaller.
         */
-       switch(get_time_axis_view().height) {
-               case TimeAxisView::Smaller:
-               case TimeAxisView::Small:
-                       h = get_time_axis_view().height - 3.0;
-                       break;
-
-               default:
-                       h = get_time_axis_view().height - NAME_HIGHLIGHT_SIZE - 3.0;
+       double tav_height = get_time_axis_view().height;
+       if (tav_height == TimeAxisView::hSmaller ||
+           tav_height == TimeAxisView::hSmall) {
+               h = tav_height - 3.0;
+       } else {
+               h = tav_height - NAME_HIGHLIGHT_SIZE - 3.0;
        }
 
        if (h < 0) {