13
0

Correctly restore mixer-ui pane sizes

Pane::set_divider() constrains the divider so that widget
minimum sizes are honored.

Initially the mixer is empty and the tab has width of ~110px
(just scroll window). Pane::on_size_allocate() calls set_divider()
before actual mixer-strips are added and before the mixer window
size was restored. This incorrectly constrained pane sizes.
This commit is contained in:
Robin Gareus 2022-03-29 00:28:12 +02:00
parent d841b13673
commit 08acf42676
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -313,28 +313,10 @@ Mixer_UI::Mixer_UI ()
list_hpane.add (global_hpacker);
list_hpane.set_child_minsize (list_vpacker, 30);
XMLNode const * settings = ARDOUR_UI::instance()->mixer_settings();
float fract;
if (!settings || !settings->get_property ("mixer-rhs-pane1-pos", fract) || fract > 1.0) {
fract = 0.6f;
}
rhs_pane1.set_divider (0, fract);
if (!settings || !settings->get_property ("mixer-rhs-pane2-pos", fract) || fract > 1.0) {
fract = 0.7f;
}
rhs_pane2.set_divider (0, fract);
if (!settings || !settings->get_property ("mixer-list-hpane-pos", fract) || fract > 1.0) {
fract = 0.2f;
}
list_hpane.set_divider (0, fract);
if (!settings || !settings->get_property ("mixer-inner-pane-pos", fract) || fract > 1.0) {
fract = 0.8f;
}
inner_pane.set_divider (0, fract);
rhs_pane1.set_divider (0, .6);
rhs_pane2.set_divider (0, .7);
list_hpane.set_divider (0, .2);
inner_pane.set_divider (0, .8);
rhs_pane1.set_drag_cursor (*PublicEditor::instance().cursors()->expand_up_down);
rhs_pane2.set_drag_cursor (*PublicEditor::instance().cursors()->expand_up_down);
@ -2528,6 +2510,27 @@ Mixer_UI::set_state (const XMLNode& node, int version)
sync_treeview_from_favorite_order ();
}
float fract;
if (!node.get_property ("mixer-rhs-pane1-pos", fract) || fract > 1.0) {
fract = 0.6f;
}
rhs_pane1.set_divider (0, fract);
if (!node.get_property ("mixer-rhs-pane2-pos", fract) || fract > 1.0) {
fract = 0.7f;
}
rhs_pane2.set_divider (0, fract);
if (!node.get_property ("mixer-list-hpane-pos", fract) || fract > 1.0) {
fract = 0.2f;
}
list_hpane.set_divider (0, fract);
if (!node.get_property ("mixer-inner-pane-pos", fract) || fract > 1.0) {
fract = 0.8f;
}
inner_pane.set_divider (0, fract);
return 0;
}