From 0fe194c90b11e3b22ed2d166d5ceae5099a3981d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 14 Jun 2016 11:47:25 -0400 Subject: extend ArdourButton API to provide a new tweak for buttons with occasional text Buttons with this tweak do not change their size request based on their text (or lack of it) --- gtk2_ardour/ardour_button.cc | 32 ++++++++++++++++++++++++-------- gtk2_ardour/ardour_button.h | 3 ++- 2 files changed, 26 insertions(+), 9 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc index 0fa53c5372..aa28382823 100644 --- a/gtk2_ardour/ardour_button.cc +++ b/gtk2_ardour/ardour_button.cc @@ -541,14 +541,30 @@ ArdourButton::on_size_request (Gtk::Requisition* req) } } - if ((_elements & Text) && !_text.empty()) { - // if _layout does not exist, char_pixel_height() creates it, - req->height = std::max(req->height, (int) ceil(char_pixel_height() * BASELINESTRETCH + 1.0)); - assert (_layout); - _layout->get_pixel_size (_text_width, _text_height); - - req->width += rint(1.75 * char_pixel_width()); // padding - req->width += _text_width; + if (_elements & Text) { + + if (_tweaks & OccasionalText) { + + /* size should not change based on presence or absence + * of text. + */ + + if (!_text.empty()) { + ensure_layout (); + _layout->set_text (_text); + _layout->get_pixel_size (_text_width, _text_height); + } + + } else if (!_text.empty()) { + + //if _layout does not exist, char_pixel_height() creates it, + + req->height = std::max(req->height, (int) ceil(char_pixel_height() * BASELINESTRETCH + 1.0)); + assert (_layout); + _layout->get_pixel_size (_text_width, _text_height); + req->width += rint(1.75 * char_pixel_width()); // padding + req->width += _text_width; + } /* XXX hack (surprise). Deal with two common rotation angles */ diff --git a/gtk2_ardour/ardour_button.h b/gtk2_ardour/ardour_button.h index 928f4a8355..78c2f5e369 100644 --- a/gtk2_ardour/ardour_button.h +++ b/gtk2_ardour/ardour_button.h @@ -55,7 +55,8 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable enum Tweaks { Square = 0x1, TrackHeader = 0x2, - unused3 = 0x4, + OccasionalText = 0x4, + unused4 = 0x8, }; Tweaks tweaks() const { return _tweaks; } -- cgit v1.2.3