diff options
author | Ben Loftis <ben@harrisonconsoles.com> | 2017-08-26 22:44:48 -0500 |
---|---|---|
committer | Ben Loftis <ben@harrisonconsoles.com> | 2017-08-26 22:44:58 -0500 |
commit | 1c145ccfc37e0a16bf959de388ff098ca5f8f499 (patch) | |
tree | d2b6f368742e39b7d25bb9bc95e4003fe679b4c4 /gtk2_ardour/editor_canvas.cc | |
parent | 49765f8897784d83564c8301ed1ffe82d6bdab92 (diff) |
Editor zooming: Config preference to define how much zooming will be easily allowed beyond the session_ui_extents()
Diffstat (limited to 'gtk2_ardour/editor_canvas.cc')
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index 565dbf0b78..729034a204 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -584,6 +584,10 @@ Editor::autoscroll_active () const std::pair <framepos_t,framepos_t> Editor::session_gui_extents () 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,18 @@ 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 ) + 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; |