when calculating average slave/master delta, use absolute value.
[ardour.git] / gtk2_ardour / editor_canvas.cc
index 43b97a36f7fb928244b017ccad8aaea66f5cb310..56571c3de886e7c36d52c6fd0bd69f784bb3c820 100644 (file)
@@ -582,8 +582,12 @@ Editor::autoscroll_active () const
 }
 
 std::pair <framepos_t,framepos_t>
-Editor::session_gui_extents () const
+Editor::session_gui_extents ( bool use_extra ) const
 {
+       if (!_session) {
+               return std::pair <framepos_t,framepos_t>(max_framepos,0);
+       }
+       
        framecnt_t session_extent_start = _session->current_start_frame();
        framecnt_t session_extent_end = _session->current_end_frame();
 
@@ -611,10 +615,20 @@ Editor::session_gui_extents () const
 
        //ToDo: also incorporate automation regions (in case the session has no audio/midi but is just used for automating plugins or the like)
 
-       //if all else fails, give us 2 minutes
-       framecnt_t const min_length = _session->nominal_frame_rate()*60*2;
-       if ( session_extent_end < min_length )
-               session_extent_end = min_length;
+       //add additional time to the ui extents ( user-defined in config )
+       if (use_extra) {
+               framecnt_t const extra = UIConfiguration::instance().get_extra_ui_extents_time() * 60 * _session->nominal_frame_rate();
+               session_extent_end += extra;
+               session_extent_start -= extra;
+       }
+                       
+       //range-check
+       if (session_extent_end > max_framepos) {
+               session_extent_end = max_framepos;
+       }
+       if (session_extent_start < 0) {
+               session_extent_start = 0;
+       }
        
        std::pair <framepos_t,framepos_t> ret (session_extent_start, session_extent_end);
        return ret;
@@ -652,7 +666,7 @@ Editor::autoscroll_canvas ()
 
                        dx = pixel_to_sample (dx);
                        
-                       dx /= 10;  //ToDo:  make a config variable for scroll speed  zoom-behavior-tweaks
+                       dx *= UIConfiguration::instance().get_draggable_playhead_speed();
 
                        if (leftmost_frame < max_framepos - dx) {
                                new_frame = leftmost_frame + dx;
@@ -669,7 +683,7 @@ Editor::autoscroll_canvas ()
 
                        dx = pixel_to_sample (dx);
 
-                       dx /= 10;  //ToDo:  make a config variable for scroll speed  zoom-behavior-tweaks
+                       dx *= UIConfiguration::instance().get_draggable_playhead_speed();
 
                        if (leftmost_frame >= dx) {
                                new_frame = leftmost_frame - dx;