mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +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;
|
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 void stop_canvas_autoscroll () = 0;
|
||||||
virtual bool autoscroll_active() const = 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 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;
|
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_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 scroll_left_half_page ();
|
|
||||||
void scroll_right_half_page ();
|
|
||||||
|
|
||||||
void select_topmost_track ();
|
void select_topmost_track ();
|
||||||
|
|
||||||
void cleanup_regions ();
|
void cleanup_regions ();
|
||||||
|
|
|
||||||
|
|
@ -1766,53 +1766,6 @@ Editor::scroll_up_one_track (bool skip_child_views)
|
||||||
return false;
|
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 */
|
/* ZOOM */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -196,19 +196,29 @@ PianorollMidiView::scroll (GdkEventScroll* ev)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
|
|
||||||
|
|
||||||
switch (ev->direction) {
|
switch (ev->direction) {
|
||||||
case GDK_SCROLL_UP:
|
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);
|
_editing_context.reset_zoom (_editing_context.get_current_zoom() / 2);
|
||||||
return true;
|
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);
|
_editing_context.reset_zoom (_editing_context.get_current_zoom() * 2);
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return MidiView::scroll (ev);
|
return MidiView::scroll (ev);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue