mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 06:44:57 +01:00
refactor horizontal scrolling to use same code/modifiers in Editor and PianorollMidiView
This commit is contained in:
parent
3a337b97ea
commit
71ff8ba3e0
5 changed files with 69 additions and 60 deletions
|
|
@ -3918,3 +3918,50 @@ EditingContext::set_minsec_ruler_scale (samplepos_t lower, samplepos_t upper)
|
|||
minsec_ruler_scale = minsec_show_many_hours;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
EditingContext::scroll_left_step ()
|
||||
{
|
||||
samplepos_t xdelta = (current_page_samples() / 8);
|
||||
|
||||
if (_leftmost_sample > xdelta) {
|
||||
reset_x_origin (_leftmost_sample - xdelta);
|
||||
} else {
|
||||
reset_x_origin (0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
EditingContext::scroll_right_step ()
|
||||
{
|
||||
samplepos_t xdelta = (current_page_samples() / 8);
|
||||
|
||||
if (max_samplepos - xdelta > _leftmost_sample) {
|
||||
reset_x_origin (_leftmost_sample + xdelta);
|
||||
} else {
|
||||
reset_x_origin (max_samplepos - current_page_samples());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
EditingContext::scroll_left_half_page ()
|
||||
{
|
||||
samplepos_t xdelta = (current_page_samples() / 2);
|
||||
if (_leftmost_sample > xdelta) {
|
||||
reset_x_origin (_leftmost_sample - xdelta);
|
||||
} else {
|
||||
reset_x_origin (0);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
EditingContext::scroll_right_half_page ()
|
||||
{
|
||||
samplepos_t xdelta = (current_page_samples() / 2);
|
||||
if (max_samplepos - xdelta > _leftmost_sample) {
|
||||
reset_x_origin (_leftmost_sample + xdelta);
|
||||
} else {
|
||||
reset_x_origin (max_samplepos - current_page_samples());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,6 +123,11 @@ class EditingContext : public ARDOUR::SessionHandlePtr, public AxisViewProvider,
|
|||
virtual void stop_canvas_autoscroll () = 0;
|
||||
virtual bool autoscroll_active() const = 0;
|
||||
|
||||
void scroll_left_step ();
|
||||
void scroll_right_step ();
|
||||
void scroll_left_half_page ();
|
||||
void scroll_right_half_page ();
|
||||
|
||||
virtual void redisplay_grid (bool immediate_redraw) = 0;
|
||||
virtual Temporal::timecnt_t get_nudge_distance (Temporal::timepos_t const & pos, Temporal::timecnt_t& next) const = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -344,12 +344,6 @@ public:
|
|||
bool scroll_up_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 scroll_left_half_page ();
|
||||
void scroll_right_half_page ();
|
||||
|
||||
void select_topmost_track ();
|
||||
|
||||
void cleanup_regions ();
|
||||
|
|
|
|||
|
|
@ -1766,53 +1766,6 @@ Editor::scroll_up_one_track (bool skip_child_views)
|
|||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
Editor::scroll_left_step ()
|
||||
{
|
||||
samplepos_t xdelta = (current_page_samples() / 8);
|
||||
|
||||
if (_leftmost_sample > xdelta) {
|
||||
reset_x_origin (_leftmost_sample - xdelta);
|
||||
} else {
|
||||
reset_x_origin (0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Editor::scroll_right_step ()
|
||||
{
|
||||
samplepos_t xdelta = (current_page_samples() / 8);
|
||||
|
||||
if (max_samplepos - xdelta > _leftmost_sample) {
|
||||
reset_x_origin (_leftmost_sample + xdelta);
|
||||
} else {
|
||||
reset_x_origin (max_samplepos - current_page_samples());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::scroll_left_half_page ()
|
||||
{
|
||||
samplepos_t xdelta = (current_page_samples() / 2);
|
||||
if (_leftmost_sample > xdelta) {
|
||||
reset_x_origin (_leftmost_sample - xdelta);
|
||||
} else {
|
||||
reset_x_origin (0);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::scroll_right_half_page ()
|
||||
{
|
||||
samplepos_t xdelta = (current_page_samples() / 2);
|
||||
if (max_samplepos - xdelta > _leftmost_sample) {
|
||||
reset_x_origin (_leftmost_sample + xdelta);
|
||||
} else {
|
||||
reset_x_origin (max_samplepos - current_page_samples());
|
||||
}
|
||||
}
|
||||
|
||||
/* ZOOM */
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -196,18 +196,28 @@ PianorollMidiView::scroll (GdkEventScroll* ev)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
|
||||
|
||||
switch (ev->direction) {
|
||||
case GDK_SCROLL_UP:
|
||||
switch (ev->direction) {
|
||||
case GDK_SCROLL_UP:
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) {
|
||||
_editing_context.scroll_left_step ();
|
||||
return true;
|
||||
}
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
|
||||
_editing_context.reset_zoom (_editing_context.get_current_zoom() / 2);
|
||||
return true;
|
||||
case GDK_SCROLL_DOWN:
|
||||
}
|
||||
case GDK_SCROLL_DOWN:
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) {
|
||||
_editing_context.scroll_right_step ();
|
||||
return true;
|
||||
}
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
|
||||
_editing_context.reset_zoom (_editing_context.get_current_zoom() * 2);
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return MidiView::scroll (ev);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue