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:
parent
0eb509ac2e
commit
0fe194c90b
@ -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 */
|
||||
|
||||
|
@ -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; }
|
||||
|
Loading…
Reference in New Issue
Block a user