X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.cc;h=d1bad2d2bd65424aa31be23759e012af85352495;hb=b1c48972f2914b49d45a7cef2b38a0a125bd731e;hp=7b5685858df797bc48e29bd03c7ec2816766da6e;hpb=063ab23465759839eb723c20664cbfe388701fda;p=ardour.git diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 7b5685858d..d1bad2d2bd 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -344,7 +344,6 @@ Editor::Editor () _new_regionviews_show_envelope = false; current_timefx = 0; in_edit_group_row_change = false; - last_canvas_frame = 0; playhead_cursor = 0; button_release_can_deselect = true; _dragging_playhead = false; @@ -1174,18 +1173,15 @@ Editor::handle_new_duration () } ENSURE_GUI_THREAD (mem_fun (*this, &Editor::handle_new_duration)); + nframes64_t new_end = session->current_end_frame() + (nframes64_t) floorf (current_page_frames() * 0.10f); - nframes64_t new_end = session->get_maximum_extent() + (nframes64_t) floorf (current_page_frames() * 0.10f); - - if (new_end > last_canvas_frame) { - last_canvas_frame = new_end; - horizontal_adjustment.set_upper (last_canvas_frame / frames_per_unit); - horizontal_adjustment.set_page_size (current_page_frames()/frames_per_unit); - //reset_scrolling_region (); - } + horizontal_adjustment.set_upper (new_end / frames_per_unit); + horizontal_adjustment.set_page_size (current_page_frames()/frames_per_unit); - horizontal_adjustment.set_value (leftmost_frame/frames_per_unit); - //cerr << "Editor::handle_new_duration () called ha v:l:u:ps:lcf = " << horizontal_adjustment.get_value() << ":" << horizontal_adjustment.get_lower() << ":" << horizontal_adjustment.get_upper() << ":" << horizontal_adjustment.get_page_size() << ":" << last_canvas_frame << endl;//DEBUG + if (horizontal_adjustment.get_value() + canvas_width > horizontal_adjustment.get_upper()) { + horizontal_adjustment.set_value (horizontal_adjustment.get_upper() - canvas_width); + } + //cerr << "Editor::handle_new_duration () called ha v:l:u:ps:lcf = " << horizontal_adjustment.get_value() << ":" << horizontal_adjustment.get_lower() << ":" << horizontal_adjustment.get_upper() << ":" << horizontal_adjustment.get_page_size() << ":" << endl;//DEBUG } void @@ -1329,7 +1325,6 @@ Editor::connect_to_session (Session *t) sfbrowser->set_session (session); } - last_canvas_frame = 0; // force update in handle_new_duration() handle_new_duration (); redisplay_regions (); @@ -4056,7 +4051,8 @@ Editor::end_location_changed (Location* location) { ENSURE_GUI_THREAD (bind (mem_fun(*this, &Editor::end_location_changed), location)); //reset_scrolling_region (); - horizontal_adjustment.set_upper ( location->start()); + nframes64_t session_span = location->start() + (nframes64_t) floorf (current_page_frames() * 0.10f); + horizontal_adjustment.set_upper (session_span / frames_per_unit); } int @@ -4674,14 +4670,14 @@ Editor::idle_visual_changer () if (session) { csf = session->current_start_frame(); - cef = session->current_end_frame() + (current_page_frames() / 24);// Add a little extra so we can see the end marker + cef = session->current_end_frame(); } /* if we seek beyond the current end of the canvas, move the end */ if (current_time_origin != pending_visual_change.time_origin) { - last_canvas_frame = (cef > (pending_visual_change.time_origin + current_page_frames())) ? cef : pending_visual_change.time_origin + current_page_frames(); - horizontal_adjustment.set_upper ((cef - csf) / frames_per_unit); + cef += current_page_frames() / 10; // Add a little extra so we can see the end marker + horizontal_adjustment.set_upper (cef / frames_per_unit); horizontal_adjustment.set_value (pending_visual_change.time_origin / frames_per_unit); } else { update_fixed_rulers();