Refactor scrolling track canvas in Editor class into two utility methods

This commit is contained in:
Tim Mayberry 2016-01-07 10:30:29 +10:00
parent cd377f1278
commit c6805c1454
3 changed files with 32 additions and 13 deletions

View File

@ -374,6 +374,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
bool scroll_up_one_track (bool skip_child_views = false); bool scroll_up_one_track (bool skip_child_views = false);
bool scroll_down_one_track (bool skip_child_views = false); bool scroll_down_one_track (bool skip_child_views = false);
void scroll_left_step ();
void scroll_right_step ();
void prepare_for_cleanup (); void prepare_for_cleanup ();
void finish_cleanup (); void finish_cleanup ();

View File

@ -64,7 +64,6 @@ using Gtkmm2ext::Keyboard;
bool bool
Editor::track_canvas_scroll (GdkEventScroll* ev) Editor::track_canvas_scroll (GdkEventScroll* ev)
{ {
framepos_t xdelta;
int direction = ev->direction; int direction = ev->direction;
/* this event arrives without transformation by the canvas, so we have /* this event arrives without transformation by the canvas, so we have
@ -134,21 +133,13 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
break; break;
case GDK_SCROLL_LEFT: case GDK_SCROLL_LEFT:
xdelta = (current_page_samples() / 8); scroll_left_step ();
if (leftmost_frame > xdelta) { return true;
reset_x_origin (leftmost_frame - xdelta);
} else {
reset_x_origin (0);
}
break; break;
case GDK_SCROLL_RIGHT: case GDK_SCROLL_RIGHT:
xdelta = (current_page_samples() / 8); scroll_right_step ();
if (max_framepos - xdelta > leftmost_frame) { return true;
reset_x_origin (leftmost_frame + xdelta);
} else {
reset_x_origin (max_framepos - current_page_samples());
}
break; break;
default: default:

View File

@ -1589,6 +1589,31 @@ Editor::scroll_up_one_track (bool skip_child_views)
return false; return false;
} }
void
Editor::scroll_left_step ()
{
framepos_t xdelta = (current_page_samples() / 8);
if (leftmost_frame > xdelta) {
reset_x_origin (leftmost_frame - xdelta);
} else {
reset_x_origin (0);
}
}
void
Editor::scroll_right_step ()
{
framepos_t xdelta = (current_page_samples() / 8);
if (max_framepos - xdelta > leftmost_frame) {
reset_x_origin (leftmost_frame + xdelta);
} else {
reset_x_origin (max_framepos - current_page_samples());
}
}
/* ZOOM */ /* ZOOM */
void void