Avoid 1px size changes when sizing_text() is used
authorJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Thu, 25 Aug 2016 17:00:05 +0000 (19:00 +0200)
committerJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Thu, 25 Aug 2016 17:23:49 +0000 (19:23 +0200)
When requesting a size for ArdourButton, the width and height of the
button could be increased by one to ensure the center of the text would
lie exactly at the center of the button.

I initially thought that it was a good idea even when the text used for
sizing was frozen, but the main (and only?) use-case for that is to
actually freeze the size of the button regardless of the actual
displayed text, so jittering by one pixel is not welcome.

Only do the centering tweak if there is no sizing text.

gtk2_ardour/ardour_button.cc

index e817882a5d114118bfa2916acbfbef73f5b758b4..922ba84d2c08ae82739395e7af749440c9bcc899 100644 (file)
@@ -649,7 +649,7 @@ ArdourButton::on_size_request (Gtk::Requisition* req)
                        req->width = req->height;
                if (req->height < req->width)
                        req->height = req->width;
-       } else if (_text_width > 0 && !(_elements & (Menu | Indicator))) {
+       } else if (_sizing_text.empty() && _text_width > 0 && !(_elements & (Menu | Indicator))) {
                // properly centered text for those elements that are centered
                // (no sub-pixel offset)
                if ((req->width - _text_width) & 1) { ++req->width; }