From a38caffcd0e5648f9f142976f0932f831a8ebdaf Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 19 Jun 2024 14:47:47 +0000 Subject: [PATCH] Bugfix: GUI/OptionsDialog: Properly disable dustdynamic labels when appropriate --- src/qt/optionsdialog.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 6bc799d3fb..59c27fe62a 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -26,6 +26,7 @@ #include // for WITNESS_SCALE_FACTOR #include #include // for maxmempoolMinimum +#include #include #include #include @@ -95,9 +96,24 @@ void OptionsDialog::CreateOptionUI(QBoxLayout * const layout, QWidget * const o, layout->addLayout(horizontalLayout); + o->setProperty("L", QVariant::fromValue((QLayout*)horizontalLayout)); + FixTabOrder(o); } +static void setSiblingsEnabled(QWidget * const o, const bool state) +{ + auto layout = o->property("L").value(); + Assert(layout); + // NOTE: QLayout::children does not do what we need here + for (int i = layout->count(); i-- > 0; ) { + QLayoutItem * const layoutitem = layout->itemAt(i); + QWidget * const childwidget = layoutitem->widget(); + if (!childwidget) continue; + childwidget->setEnabled(state); + } +} + int setFontChoice(QComboBox* cb, const OptionsModel::FontChoice& fc) { int i; @@ -417,15 +433,12 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet) connect(dustdynamic_enable, &QAbstractButton::toggled, [this](const bool state){ dustdynamic_multiplier->setEnabled(state); - dustdynamic_target->setEnabled(state); - dustdynamic_mempool->setEnabled(state); + setSiblingsEnabled(dustdynamic_target_blocks, state); + setSiblingsEnabled(dustdynamic_mempool_kvB, state); if (state) { if (!dustdynamic_mempool->isChecked()) dustdynamic_target->setChecked(true); dustdynamic_target_blocks->setEnabled(dustdynamic_target->isChecked()); dustdynamic_mempool_kvB->setEnabled(dustdynamic_mempool->isChecked()); - } else { - dustdynamic_target_blocks->setEnabled(false); - dustdynamic_mempool_kvB->setEnabled(false); } }); dustdynamic_enable->toggled(dustdynamic_enable->isChecked());