}
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();
//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;
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;
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;