summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-07-25 20:28:51 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-07-25 20:28:51 +0000
commitaf7ba3347cedec421c7e62e772eed2a8d8300a59 (patch)
treefdcdb9b929ab5434f567d0ad90329b7d5fda3abd /gtk2_ardour
parent372137f37367eab75b0a34fd00937a232ad37874 (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.h1
-rw-r--r--gtk2_ardour/editor_canvas.cc16
-rw-r--r--gtk2_ardour/public_editor.h1
-rw-r--r--gtk2_ardour/time_axis_view.cc3
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;