diff options
author | Robin Gareus <robin@gareus.org> | 2015-01-07 22:07:23 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-01-07 23:46:22 +0100 |
commit | 0a4038f1df44bd289fac1f767eacb1b863fb5fbe (patch) | |
tree | 800d8beb0674c59b694f261e3f326e7165c295ab /gtk2_ardour/meter_strip.cc | |
parent | a4f7c21ec38e59281b4755b6b96651f0b310cdd2 (diff) |
fix meter bridge window size issues
* no more OSX liveloop (window size < min size)
* properly set min window size
* re-layout metric areas when label height changes
* remove ‘smart’ auto-resize (when tracks are added/removed)
(it wasn’t smart enough to work on all WMs)
Diffstat (limited to 'gtk2_ardour/meter_strip.cc')
-rw-r--r-- | gtk2_ardour/meter_strip.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index ea54f00796..bda1d07d89 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -536,13 +536,40 @@ MeterStrip::on_size_allocate (Gtk::Allocation& a) // NB numbers are rotated 90deg. on the meterbridge tnh = 4 + std::max(2u, _session->track_number_decimals()) * 8; // TODO 8 = max_with_of_digit_0_to_9() } + + int prev_height, ignored; + bool need_relayout = false; + + namebx.get_size_request(ignored, prev_height); namebx.set_size_request(18, nh + tnh); + + if (prev_height != nh + tnh) { + need_relayout = true; + } + + namenumberbx.get_size_request(ignored, prev_height); namenumberbx.set_size_request(18, nh + tnh); + + if (prev_height != nh + tnh) { + need_relayout = true; + } + if (_route) { - name_label.set_size_request(18, nh + (_route->is_master() ? tnh : -1)); + int nlh = nh + (_route->is_master() ? tnh : -1); + name_label.get_size_request(ignored, prev_height); + name_label.set_size_request(18, nlh); name_label.set_layout_ellisize_width ((nh - 4 + (_route->is_master() ? tnh : 0)) * PANGO_SCALE); + if (prev_height != nlh) { + need_relayout = true; + } } + VBox::on_size_allocate(a); + + if (need_relayout) { + queue_resize(); + MetricChanged(); // force re-layout, parent on_scroll(), queue_resize() + } } gint |