dispose() vs finalize() vs destroy()
According to ebassi from GTK: Rule of thumb: use dispose() for releasing references to objects you acquired from the outside, and finalize() to release memory/references you allocated internally.
There's basically no reason to override
destroy(); always use
finalize. The "destroy" signal is for other code, using your widget, to release references they might have.
map() vs realize()
map - if you put it into a stack and switch pages, it will map/unmap every time, but will still be realized the whole time realized == when it's in a realized window iirc but basically you can access the window and you have access to rendering stuff mapped == when it's actually gonna be drawn, yes
Thanks to ebassi from GTK: always make sure that the popover opens inside the window; make the window request a minimum size that allows the popover to be fully contained; or make the contents of the popover be small enough to fit into a small top level parent window
Specify menu for GtkMenuButton in XML
Specify the id of the menu, like:
Set max height on GtkScrolledWindow
propagate-natural-height to true and set max height with
GDK key defines and accel strings
Showing popups on startup
First need to set style provider in
zrythm_app_startup() otherwise we get segfaults.
Custom widget text node styling
if you call append_layout, you provide the pango layout that specifies what fonts to use if it is a pango layout created with gtk_widget_create_pango_layout then yes, css may influence what font is used