summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2018-09-01 21:32:57 +0200
committerRobin Gareus <robin@gareus.org>2018-09-01 21:32:57 +0200
commit67f733bb9768e60fe7108613b3f9335675c7d08d (patch)
tree895f7f539e9c73f47e4f29732e59757e8b01a1ca
parent2a78f0a85274df4ee0d530f2dde656d4dd0bbe49 (diff)
Restore mixer scroll offset after spill
-rw-r--r--gtk2_ardour/mixer_ui.cc11
-rw-r--r--gtk2_ardour/mixer_ui.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index b9b9eccaca..4f029e9b4b 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -106,6 +106,7 @@ Mixer_UI::Mixer_UI ()
, _monitor_section (0)
, _plugin_selector (0)
, _strip_width (UIConfiguration::instance().get_default_narrow_ms() ? Narrow : Wide)
+ , _spill_scroll_position (0)
, ignore_reorder (false)
, _in_group_rebuild_or_clear (false)
, _route_deletion_in_progress (false)
@@ -1450,6 +1451,9 @@ Mixer_UI::redisplay_track_list ()
if (ss) {
boost::shared_ptr<VCA> sv = boost::dynamic_pointer_cast<VCA> (ss);
if (sv) {
+ if (_spill_scroll_position <= 0 && scroller.get_hscrollbar()) {
+ _spill_scroll_position = scroller.get_hscrollbar()->get_adjustment()->get_value();
+ }
spill_redisplay (sv);
return;
}
@@ -1541,6 +1545,13 @@ Mixer_UI::redisplay_track_list ()
}
_group_tabs->set_dirty ();
+
+ if (_spill_scroll_position > 0 && scroller.get_hscrollbar()) {
+ Adjustment* adj = scroller.get_hscrollbar()->get_adjustment();
+ adj->set_value (max (adj->get_lower(), min (adj->get_upper(), _spill_scroll_position)));
+ }
+ _spill_scroll_position = 0;
+
}
void
diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h
index 2469f74503..1315f74f5d 100644
--- a/gtk2_ardour/mixer_ui.h
+++ b/gtk2_ardour/mixer_ui.h
@@ -348,6 +348,7 @@ private:
bool vca_button_release_event (GdkEventButton*, VCAMasterStrip*);
Width _strip_width;
+ double _spill_scroll_position;
void presentation_info_changed (PBD::PropertyChange const &);
void sync_treeview_from_presentation_info (PBD::PropertyChange const &);