summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor.cc
diff options
context:
space:
mode:
authorNick Mainsbridge <beatroute@iprimus.com.au>2008-10-18 12:51:48 +0000
committerNick Mainsbridge <beatroute@iprimus.com.au>2008-10-18 12:51:48 +0000
commit97e678dfe3b1950b6ab4b18998e1b0cfacf0c053 (patch)
treead554ad0e8b7630d576c3c85f261865ef270f483 /gtk2_ardour/editor.cc
parent9b49147d3ad92f7a9343bdd2a5637c4d349df421 (diff)
Handle changed session duration & resizing canvas better wrt end marker, remove unused last_canvas_frame, don't redraw the entire mixer every time its presented, consistent space between rightmost horizontal scroller position and end marker when zooming.
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3981 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor.cc')
-rw-r--r--gtk2_ardour/editor.cc23
1 files changed, 10 insertions, 13 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 51bf6ef9a1..b2faedcfa5 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -338,7 +338,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;
@@ -1121,16 +1120,15 @@ Editor::handle_new_duration ()
ENSURE_GUI_THREAD (mem_fun (*this, &Editor::handle_new_duration));
- nframes64_t new_end = session->current_end_frame() - session->current_start_frame() + (nframes64_t) floorf (current_page_frames() * 0.10f);
+ nframes64_t new_end = session->current_end_frame() + (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);
+
+ if (horizontal_adjustment.get_value() + canvas_width > horizontal_adjustment.get_upper()) {
+ horizontal_adjustment.set_value (horizontal_adjustment.get_upper() - canvas_width);
}
- 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
+ //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
@@ -1276,7 +1274,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 ();
@@ -4408,14 +4405,14 @@ Editor::idle_visual_changer ()
if (session) {
csf = session->current_start_frame();
- cef = session->current_end_frame() + (current_page_frames() / 10);// 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();