@@ -39,6 +39,11 @@ namespace frik
3939 _armsLengthMsg->setVisibility (_configTarget == BodyAdjustmentConfigTarget::BodyArmsLength);
4040 _vrScaleMsg->setVisibility (_configTarget == BodyAdjustmentConfigTarget::VRScale);
4141
42+ // save/reset only make sense once an adjustment target is selected
43+ const bool noTarget = _configTarget == BodyAdjustmentConfigTarget::None;
44+ _saveBtn->setDisabled (noTarget);
45+ _resetBtn->setDisabled (noTarget);
46+
4247 handleAdjustment ();
4348 }
4449
@@ -60,35 +65,45 @@ namespace frik
6065 row1Container->addElement (hideHeadBtn);
6166
6267 const auto heightToggleBtn = std::make_shared<UIToggleButton>(" ui-config-main\\ btn-body-vertical.nif" );
63- heightToggleBtn->setOnToggleHandler ([this ](UIWidget*, bool ) { _configTarget = BodyAdjustmentConfigTarget::BodyHeight; });
68+ heightToggleBtn->setOnToggleHandler (
69+ [this ](UIWidget*, const bool enabled) { _configTarget = enabled ? BodyAdjustmentConfigTarget::BodyHeight : BodyAdjustmentConfigTarget::None; });
6470
6571 const auto forwardToggleBtn = std::make_shared<UIToggleButton>(" ui-config-main\\ btn-body-forward.nif" );
66- forwardToggleBtn->setOnToggleHandler ([this ](UIWidget*, bool ) { _configTarget = BodyAdjustmentConfigTarget::BodyForwardOffset; });
72+ forwardToggleBtn->setOnToggleHandler (
73+ [this ](UIWidget*, const bool enabled) { _configTarget = enabled ? BodyAdjustmentConfigTarget::BodyForwardOffset : BodyAdjustmentConfigTarget::None; });
6774
6875 const auto armsLengthToggleBtn = std::make_shared<UIToggleButton>(" ui-config-main\\ btn-arms-length.nif" );
69- armsLengthToggleBtn->setOnToggleHandler ([this ](UIWidget*, bool ) { _configTarget = BodyAdjustmentConfigTarget::BodyArmsLength; });
76+ armsLengthToggleBtn->setOnToggleHandler (
77+ [this ](UIWidget*, const bool enabled) { _configTarget = enabled ? BodyAdjustmentConfigTarget::BodyArmsLength : BodyAdjustmentConfigTarget::None; });
7078
7179 const auto vrScaleToggleBtn = std::make_shared<UIToggleButton>(" ui-config-main\\ btn-vr-scale.nif" );
72- vrScaleToggleBtn->setOnToggleHandler ([this ](UIWidget*, bool ) { _configTarget = BodyAdjustmentConfigTarget::VRScale; });
80+ vrScaleToggleBtn->setOnToggleHandler (
81+ [this ](UIWidget*, const bool enabled) { _configTarget = enabled ? BodyAdjustmentConfigTarget::VRScale : BodyAdjustmentConfigTarget::None; });
7382
7483 _row2Container = std::make_shared<UIToggleGroupContainer>(" Row2" , UIContainerLayout::HorizontalCenter, 0 .3f );
7584 _row2Container->addElement (heightToggleBtn);
7685 _row2Container->addElement (forwardToggleBtn);
7786 _row2Container->addElement (armsLengthToggleBtn);
7887 _row2Container->addElement (vrScaleToggleBtn);
7988
80- const auto saveBtn = std::make_shared<UIButton>(" ui-common\\ btn-save.nif" );
81- saveBtn->setOnPressHandler ([this ](UIWidget*) { saveConfig (); });
89+ // the toggle group disables un-toggling by default; re-enable it so the user can clear the selection back to no target
90+ heightToggleBtn->setUnToggleAllowed (true );
91+ forwardToggleBtn->setUnToggleAllowed (true );
92+ armsLengthToggleBtn->setUnToggleAllowed (true );
93+ vrScaleToggleBtn->setUnToggleAllowed (true );
94+
95+ _saveBtn = std::make_shared<UIButton>(" ui-common\\ btn-save.nif" );
96+ _saveBtn->setOnPressHandler ([this ](UIWidget*) { saveConfig (); });
8297
83- const auto resetBtn = std::make_shared<UIButton>(" ui-common\\ btn-reset.nif" );
84- resetBtn ->setOnPressHandler ([this ](UIWidget*) { resetConfig (); });
98+ _resetBtn = std::make_shared<UIButton>(" ui-common\\ btn-reset.nif" );
99+ _resetBtn ->setOnPressHandler ([this ](UIWidget*) { resetConfig (); });
85100
86101 const auto exitBtn = std::make_shared<UIButton>(" ui-common\\ btn-back.nif" );
87102 exitBtn->setOnPressHandler ([this ](UIWidget*) { closeConfig (); });
88103
89104 const auto row3Container = std::make_shared<UIContainer>(" Row3" , UIContainerLayout::HorizontalCenter, 0 .3f );
90- row3Container->addElement (saveBtn );
91- row3Container->addElement (resetBtn );
105+ row3Container->addElement (_saveBtn );
106+ row3Container->addElement (_resetBtn );
92107 row3Container->addElement (exitBtn);
93108
94109 _noneMsg = std::make_shared<UIWidget>(" ui-config-main\\ msg-node-selected.nif" );
0 commit comments