summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug McLain <doug@nostar.net>2008-06-19 07:52:32 +0000
committerDoug McLain <doug@nostar.net>2008-06-19 07:52:32 +0000
commit7d2d9a23171f9c35c7b53224f8aa6be32c077352 (patch)
treef7b44a9736aa9a491abe48b9d17e0b9a030246af
parenta64926234f8a172adea2dc01280b8a9ce3f74fd8 (diff)
Fixes and changes to the horizontal canvas scrolling, per our conversation on IRC and mantis #2275. When the playhead is seeked past the end marker, the canvas will grow as needed. The Zoom to Session button will now reset the canvas size to start <--> end plus a little extra after end, so the end marker is visible.
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3480 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/editor.cc20
-rw-r--r--gtk2_ardour/editor_canvas.cc2
-rw-r--r--gtk2_ardour/editor_ops.cc1
3 files changed, 16 insertions, 7 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 1952fd8fdc..82e720f6d8 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -1119,6 +1119,7 @@ Editor::handle_new_duration ()
}
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
}
void
@@ -4155,6 +4156,7 @@ Editor::reset_zoom (double fpu)
void
Editor::reposition_and_zoom (nframes64_t frame, double fpu)
{
+ //cerr << "Editor::reposition_and_zoom () called ha v:l:u:ps:fpu = " << horizontal_adjustment.get_value() << ":" << horizontal_adjustment.get_lower() << ":" << horizontal_adjustment.get_upper() << ":" << horizontal_adjustment.get_page_size() << ":" << frames_per_unit << endl;//DEBUG
reset_x_origin (frame);
reset_zoom (fpu);
@@ -4342,6 +4344,12 @@ int
Editor::idle_visual_changer ()
{
VisualChange::Type p = pending_visual_change.pending;
+ nframes64_t csf, cef;
+
+ 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
+ }
pending_visual_change.pending = (VisualChange::Type) 0;
pending_visual_change.idle_handler_id = -1;
@@ -4359,8 +4367,8 @@ Editor::idle_visual_changer ()
if (time_origin != pending_visual_change.time_origin) {
if (horizontal_adjustment.get_upper() < pending_visual_change.time_origin) {
- last_canvas_frame = pending_visual_change.time_origin + current_page_frames();
- horizontal_adjustment.set_upper (last_canvas_frame / frames_per_unit);
+ 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);
reset_scrolling_region ();
}
@@ -4370,7 +4378,7 @@ Editor::idle_visual_changer ()
redisplay_tempo (true);
}
}
-
+ //cerr << "Editor::idle_visual_changer () called ha v:l:u:ps:fpu = " << horizontal_adjustment.get_value() << ":" << horizontal_adjustment.get_lower() << ":" << horizontal_adjustment.get_upper() << ":" << horizontal_adjustment.get_page_size() << ":" << frames_per_unit << endl;//DEBUG
return 0; /* this is always a one-shot call */
}
@@ -4757,13 +4765,13 @@ Editor::queue_draw_resize_line (int at)
bool
Editor::on_expose_event (GdkEventExpose* ev)
{
- cerr << "+++ editor expose "
+ /* cerr << "+++ editor expose "
<< ev->area.x << ',' << ev->area.y
<< ' '
<< ev->area.width << " x " << ev->area.height
<< " need reize ? " << need_resize_line
<< endl;
-
+ */
bool ret = Window::on_expose_event (ev);
if (need_resize_line) {
@@ -4822,6 +4830,6 @@ Editor::on_expose_event (GdkEventExpose* ev)
}
}
- cerr << "--- editor expose\n";
+ //cerr << "--- editor expose\n";
return ret;
}
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index d0150713aa..5411a3a611 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -377,7 +377,7 @@ Editor::reset_scrolling_region (Gtk::Allocation* alloc)
}
double last_canvas_unit = max ((last_canvas_frame / frames_per_unit), canvas_width);
-
+ //cerr << "Editor::reset_scrolling_region () lcf:fpu:cw:lcu " << last_canvas_frame << ":" << frames_per_unit << ":" << canvas_width << ":" << last_canvas_unit << endl;//DEBUG
track_canvas->set_scroll_region (0.0, 0.0, last_canvas_unit, pos);
// XXX what is the correct height value for the time canvas ? this overstates it
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 50980e4d09..fa5c3d9949 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -1828,6 +1828,7 @@ Editor::temporal_zoom_session ()
ENSURE_GUI_THREAD (mem_fun (*this, &Editor::temporal_zoom_session));
if (session) {
+ last_canvas_frame = ((session->current_end_frame() - session->current_start_frame()) + (current_page_frames() / 24));
temporal_zoom_by_frame (session->current_start_frame(), session->current_end_frame(), "zoom to session");
}
}