Refactor scrolling in Editor ruler canvas area into two utility methods

This commit is contained in:
Tim Mayberry 2016-01-07 11:26:22 +10:00
parent 743e324c6a
commit 08cbe0532c
3 changed files with 27 additions and 13 deletions

View File

@ -377,6 +377,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void scroll_left_step ();
void scroll_right_step ();
void scroll_left_half_page ();
void scroll_right_half_page ();
void prepare_for_cleanup ();
void finish_cleanup ();

View File

@ -1018,7 +1018,6 @@ Editor::canvas_meter_marker_event (GdkEvent *event, ArdourCanvas::Item* item, Me
bool
Editor::canvas_ruler_event (GdkEvent *event, ArdourCanvas::Item* item, ItemType type)
{
framepos_t xdelta;
bool handled = false;
if (event->type == GDK_SCROLL) {
@ -1056,22 +1055,12 @@ Editor::canvas_ruler_event (GdkEvent *event, ArdourCanvas::Item* item, ItemType
break;
case GDK_SCROLL_LEFT:
xdelta = (current_page_samples() / 2);
if (leftmost_frame > xdelta) {
reset_x_origin (leftmost_frame - xdelta);
} else {
reset_x_origin (0);
}
scroll_left_half_page ();
handled = true;
break;
case GDK_SCROLL_RIGHT:
xdelta = (current_page_samples() / 2);
if (max_framepos - xdelta > leftmost_frame) {
reset_x_origin (leftmost_frame + xdelta);
} else {
reset_x_origin (max_framepos - current_page_samples());
}
scroll_right_half_page ();
handled = true;
break;

View File

@ -1614,6 +1614,28 @@ Editor::scroll_right_step ()
}
}
void
Editor::scroll_left_half_page ()
{
framepos_t xdelta = (current_page_samples() / 2);
if (leftmost_frame > xdelta) {
reset_x_origin (leftmost_frame - xdelta);
} else {
reset_x_origin (0);
}
}
void
Editor::scroll_right_half_page ()
{
framepos_t xdelta = (current_page_samples() / 2);
if (max_framepos - xdelta > leftmost_frame) {
reset_x_origin (leftmost_frame + xdelta);
} else {
reset_x_origin (max_framepos - current_page_samples());
}
}
/* ZOOM */
void