A widget's style (font) is only set after the widget has been
packed and inherits relevant information from the top-level window.
`set_size_request_to_display_given_text()` produces incorrect
results when it is called for widgets without a top-level
(here ARDOUR_UI::setup_windows() _main_window.add(), changes the
font from "Sans 11" to "Sans 9" for ArdourDropdowns).
`set_size_request_to_display_given_text()` must subscribe to
`signal_style_changed()`, however in case of ArdourButton UI-scaling
of elements also needs to be taken into account. It is preferable
to allow for multiple sizing-texts directly.
Found via `codespell -q 3 -S *.po,./.git,./share/patchfiles,./libs,./msvc_extra_headers,./share/web_surfaces,*.patch -L ba,buss,busses,discreet,doubleclick,hsi,ontop,ro,scrollin,seh,siz,sord,sur,te,trough,ue`
This doesn't yet correctly fix Pane::constrain_fract() constraints,
when moving the divider, but it does prevent child widgets from
being allocated with a size smaller than their minimum.
This fixes some layout and rendering issues (widgets that have
a too small allocation are not exposed and/or bleed into neighbors)
BindingProxy owns a PopUp prompter with 30 sec self-destruct
timeout. However ~BindingProxy explicitly destroys the PopUp.
Later the timeout can lead to a double-free.
This fixes a crash when deleting a plugin within 30 sec
after using MIDI learn.
ArdourButton draws a custom insensitive background, using
the color "gtk_background". This can conflict with gtk's
insensitive background color when using round-corners.
A Pango::Layout created by Gtk::Widget::get_pango_context ()
does not have any font set. The Font is inherited from the
layout's context.
The actual font is set when the layout is used in
on_expose_event() via get_window ()->create_cairo_context ().
In some cases we rely on the font-size to calculate the widget's
size before rendering. At this point in time there is no drawing
context from which to inherit the style.
Furthermore, even after a call to `ensure_style()` in the c'tor
of a Widget get_font() simply returns the default value.
All Widgets that rely an Pango::Layout font size during
size-requests have to explicitly set the font.
This fixes various overlarge buttons with the initial default layout.