diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-07-25 20:28:51 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-07-25 20:28:51 +0000 |
commit | af7ba3347cedec421c7e62e772eed2a8d8300a59 (patch) | |
tree | fdcdb9b929ab5434f567d0ad90329b7d5fda3abd /gtk2_ardour | |
parent | 372137f37367eab75b0a34fd00937a232ad37874 (diff) |
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
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 16 | ||||
-rw-r--r-- | gtk2_ardour/public_editor.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/time_axis_view.cc | 3 |
4 files changed, 20 insertions, 1 deletions
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 @@ -698,6 +698,22 @@ Editor::entered_track_canvas (GdkEventCrossing */*ev*/) } 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 () { scroll_canvas_vertically (); 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; |