Collecting bindings after ::finish() has already destroyed half the GUI
will result in memory corruption invalid Glib::RefPtr<Gtk::Action>
Gtkmm2ext::ActionMap::get_actions()
Gtkmm2ext::Bindings::get_all_actions()
KeyEditor::Tab::populate()
KeyEditor::refresh()
Editor::set_script_action_name()
LuaInstance::session_going_away()
PBD::Destructible::drop_references()
ARDOUR::Session::destroy()
ARDOUR::Session::~Session()
ARDOUR_UI::finish()
At the point of creation, the automate_button size request is wrong
since it has not the correct style yet. Instead of trying ugly hacks to
fix that, connect to the knob's size_request signal and get the button's
requisition only when needed. If the system font changes to one that has
different extents (even if the point size is the same), the UI will thus
correctly update.
So that the padding and other elements always correctly depend on the
font instead of the default GTK font (which might have a wildly
different size from the fixed size fonts of Ardour's custom theme).
In the normal course of events, an ArdourButton requests just enough
space to display its elements. In particular the size will change when
the text does. Yet, in several cases it is better to avoid layout jittering; until now ArdourButton users manually set a static size on the button at creation time.
Introduce new API to set the text used for measuring the button size
separately from the text that will be displayed. In most cases this
enables the callers to replace
set_size_request_to_display_given_text(button, text, w, h);
where w and h were hard-coded to cater for other button elements, by
button.set_sizing_text(text);
which will make ArdourButton correctly compute the size request in all
cases with its real elements and padding. ArdourButton users can call
button.set_sizing_text("");
to get the size request depend on displayed text (which is the default).
The insensitive state should not get a base color that's the same as the
enabled one, or the difference is not visible enough (only the text
color changes). In fact, since the goal of the entry modifications is to
aid visibility during user input, there is no reason to override the
insensitive colors.
Just inherit the insensitive colors of the global style.
Also fix a comment that was attached to the wrong declaration.
- Holding the constraint modifier at the time of grab gives constrained x.
- Holding the constraint modifier after the grab but before the first motion
constrains to the direction of first movement.