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)
This commit is contained in:
Paul Davis 2016-06-14 11:47:25 -04:00
parent 0eb509ac2e
commit 0fe194c90b
2 changed files with 25 additions and 8 deletions

View File

@ -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);
if (_elements & Text) {
req->width += rint(1.75 * char_pixel_width()); // padding
req->width += _text_width;
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 */

View File

@ -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; }