summaryrefslogtreecommitdiff
path: root/gtk2_ardour/meter_strip.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-01-07 22:07:23 +0100
committerRobin Gareus <robin@gareus.org>2015-01-07 23:46:22 +0100
commit0a4038f1df44bd289fac1f767eacb1b863fb5fbe (patch)
tree800d8beb0674c59b694f261e3f326e7165c295ab /gtk2_ardour/meter_strip.cc
parenta4f7c21ec38e59281b4755b6b96651f0b310cdd2 (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.cc29
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