diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-06-27 10:49:05 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-06-27 10:49:05 -0400 |
commit | c706b1c4bb172fb3622ada9da879e5c684f94a74 (patch) | |
tree | 470567146b627a9e3d90973bb46c65d014fae0ac /gtk2_ardour | |
parent | 242181dc104ffc8e77ccf5b777e39f2fbccd8d91 (diff) |
replace old implementation of Editor::_ensure_time_axis_view_is_visible() with the guts of Editor::ensure_track_is_visible(), then remove the latter.
Also change all users of ensure_track_is_visible() to use _ensure_time_axis_view_is_visible()
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 41 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 43 |
3 files changed, 32 insertions, 55 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index bf4783409c..a50fe95649 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -180,7 +180,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_internal_edit (bool yn); bool toggle_internal_editing_from_double_click (GdkEvent*); - void _ensure_time_axis_view_is_visible (const TimeAxisView& tav, bool at_top); + void _ensure_time_axis_view_is_visible (TimeAxisView const & tav, bool at_top); void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>); void add_to_idle_resize (TimeAxisView*, int32_t); @@ -1949,7 +1949,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD bool entered_track_canvas (GdkEventCrossing*); void set_entered_track (TimeAxisView*); void set_entered_regionview (RegionView*); - void ensure_track_visible (TimeAxisView*); gint left_automation_track (); void reset_canvas_action_sensitivity (bool); diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index d0107c789e..cae0199673 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -805,26 +805,39 @@ Editor::entered_track_canvas (GdkEventCrossing */*ev*/) } void -Editor::_ensure_time_axis_view_is_visible (const TimeAxisView& tav, bool at_top) +Editor::_ensure_time_axis_view_is_visible (TimeAxisView const & track, bool at_top) { - double begin = tav.y_position(); - double v = vertical_adjustment.get_value (); - - if (!at_top && (begin < v || begin + tav.current_height() > v + _visible_canvas_height)) { - /* try to put the TimeAxisView roughly central */ - if (begin >= _visible_canvas_height/2.0) { - begin -= _visible_canvas_height/2.0; - } + if (track.hidden()) { + return; } - /* Clamp the y pos so that we do not extend beyond the canvas full - * height. + /* compute visible area of trackview group, as offsets from top of + * trackview group. */ - if (_full_canvas_height - begin < _visible_canvas_height){ - begin = _full_canvas_height - _visible_canvas_height; + + double const current_view_min_y = vertical_adjustment.get_value(); + double const current_view_max_y = current_view_min_y + vertical_adjustment.get_page_size(); + + double const track_min_y = track.y_position (); + double const track_max_y = track.y_position () + track.effective_height (); + + if (!at_top && + (track_min_y > current_view_min_y && + track_max_y <= current_view_max_y)) { + return; + } + + double new_value; + + if (track_min_y < current_view_min_y) { + // Track is above the current view + new_value = track_min_y; + } else { + // Track is below the current view + new_value = track.y_position () + track.effective_height() - vertical_adjustment.get_page_size(); } - vertical_adjustment.set_value (begin); + vertical_adjustment.set_value(new_value); } /** Called when the main vertical_adjustment has changed */ diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 54be3c857f..96be9ed4a5 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1357,7 +1357,7 @@ Editor::scroll_down_one_track () /* move to the track below the first one that covers the */ if (next != track_views.rend()) { - ensure_track_visible (*next); + ensure_time_axis_view_is_visible (**next); return true; } @@ -1390,7 +1390,7 @@ Editor::scroll_up_one_track () } if (prev != track_views.end()) { - ensure_track_visible (*prev); + ensure_time_axis_view_is_visible (**prev); return true; } @@ -5620,7 +5620,7 @@ Editor::select_next_route() selection->set(current); - ensure_track_visible(current); + ensure_time_axis_view_is_visible (*current); } void @@ -5651,42 +5651,7 @@ Editor::select_prev_route() selection->set (current); - ensure_track_visible(current); -} - -void -Editor::ensure_track_visible(TimeAxisView *track) -{ - if (track->hidden()) { - return; - } - - /* compute visible area of trackview group, as offsets from top of - * trackview group. - */ - - double const current_view_min_y = vertical_adjustment.get_value(); - double const current_view_max_y = current_view_min_y + vertical_adjustment.get_page_size(); - - double const track_min_y = track->y_position (); - double const track_max_y = track->y_position () + track->effective_height (); - - if (track_min_y > current_view_min_y && - track_max_y <= current_view_max_y) { - return; - } - - double new_value; - - if (track_min_y < current_view_min_y) { - // Track is above the current view - new_value = track_min_y; - } else { - // Track is below the current view - new_value = track->y_position () + track->effective_height() - vertical_adjustment.get_page_size(); - } - - vertical_adjustment.set_value(new_value); + ensure_time_axis_view_is_visible (*current); } void |