From af7ba3347cedec421c7e62e772eed2a8d8300a59 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 25 Jul 2011 20:28:51 +0000 Subject: when tabbing between track/bus name entries, attempt to scroll appropriately (#4223) git-svn-id: svn://localhost/ardour2/branches/3.0@9924 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.h | 1 + gtk2_ardour/editor_canvas.cc | 16 ++++++++++++++++ gtk2_ardour/public_editor.h | 1 + gtk2_ardour/time_axis_view.cc | 3 ++- 4 files changed, 20 insertions(+), 1 deletion(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 48aaee427e..4533f99481 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -375,6 +375,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void show_window (); + void ensure_time_axis_view_is_visible (const TimeAxisView& tav); void scroll_tracks_down_line (); void scroll_tracks_up_line (); diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index f761cfd42b..9cd23e0112 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -697,6 +697,22 @@ Editor::entered_track_canvas (GdkEventCrossing */*ev*/) return FALSE; } +void +Editor::ensure_time_axis_view_is_visible (const TimeAxisView& tav) +{ + double begin = tav.y_position(); + + double v = vertical_adjustment.get_value (); + + if (begin < v || begin > v + _canvas_height) { + /* try to put the TimeAxisView roughly central */ + if (begin >= _canvas_height/2.0) { + begin -= _canvas_height/2.0; + } + vertical_adjustment.set_value (begin); + } +} + void Editor::tie_vertical_scrolling () { diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 6e2524ae62..0a927c5921 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -260,6 +260,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible { virtual framecnt_t current_page_frames() const = 0; virtual double canvas_height () const = 0; virtual void temporal_zoom_step (bool coarser) = 0; + virtual void ensure_time_axis_view_is_visible (const TimeAxisView& tav) = 0; virtual void scroll_tracks_down_line () = 0; virtual void scroll_tracks_up_line () = 0; virtual void prepare_for_cleanup () = 0; diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 85535ca82d..71a830982c 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -581,8 +581,9 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev) } while ((*i)->hidden()); } } - + (*i)->name_entry.grab_focus(); + _editor.ensure_time_axis_view_is_visible (**i); } return true; -- cgit v1.2.3