GUI/OptionsDialog: Make Spam filtering tab scrollable at smaller screen sizes

This commit is contained in:
Luke Dashjr 2024-07-06 15:07:06 +00:00
parent 7e53e5dc5b
commit 78aeaaceaf
2 changed files with 50 additions and 2 deletions

View File

@ -45,6 +45,8 @@
#include <QLocale>
#include <QMessageBox>
#include <QRadioButton>
#include <QScrollArea>
#include <QScrollBar>
#include <QSpacerItem>
#include <QString>
#include <QStringList>
@ -53,6 +55,36 @@
#include <QVBoxLayout>
#include <QWidget>
ModScrollArea::ModScrollArea()
{
setWidgetResizable(true);
setFrameShape(QFrame::NoFrame);
setObjectName(QStringLiteral("scroll"));
setStyleSheet("QScrollArea#scroll, QScrollArea#scroll > QWidget > QWidget { background: transparent; } QScrollArea#scroll > QWidget > QScrollBar { background: palette(base); }");
}
ModScrollArea *ModScrollArea::fromWidget(QWidget * const parent, QWidget * const o)
{
auto * const scroll = new ModScrollArea;
scroll->setWidget(o);
return scroll;
}
QSize ModScrollArea::minimumSizeHint() const
{
auto w = widget()->minimumSizeHint().width();
w += verticalScrollBar()->sizeHint().width();
const auto h = fontMetrics().height() * 2;
return QSize(w, h);
}
QSize ModScrollArea::sizeHint() const
{
QSize sz = widget()->sizeHint();
sz.rwidth() += verticalScrollBar()->sizeHint().width();
return sz;
}
void OptionsDialog::FixTabOrder(QWidget * const o)
{
BitcoinAmountField * const af = qobject_cast<BitcoinAmountField *>(o);
@ -290,7 +322,7 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet)
QWidget * const tabFilters = new QWidget();
auto& groupBox_Spamfiltering = tabFilters;
ui->tabWidget->insertTab(ui->tabWidget->indexOf(ui->tabWindow), tabFilters, tr("Spam &filtering"));
ui->tabWidget->insertTab(ui->tabWidget->indexOf(ui->tabWindow), ModScrollArea::fromWidget(this, groupBox_Spamfiltering), tr("Spam &filtering"));
QVBoxLayout * const verticalLayout_Spamfiltering = new QVBoxLayout(groupBox_Spamfiltering);
rejectunknownscripts = new QCheckBox(groupBox_Spamfiltering);
@ -461,7 +493,7 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet)
});
verticalLayout_Spamfiltering->addItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding));
verticalLayout_Spamfiltering->addStretch(1);
/* Mining tab */
@ -587,6 +619,8 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet)
ui->qrFont_preview->setVisible(false);
#endif
adjustSize();
GUIUtil::handleCloseWindowShortcut(this);
}

View File

@ -6,6 +6,7 @@
#define BITCOIN_QT_OPTIONSDIALOG_H
#include <QDialog>
#include <QScrollArea>
#include <QValidator>
class BitcoinAmountField;
@ -26,6 +27,19 @@ class QValueComboBox;
class QWidget;
QT_END_NAMESPACE
/** QScrollArea, but returning reasonable size hints.
*/
class ModScrollArea : public QScrollArea {
Q_OBJECT
public:
ModScrollArea();
static ModScrollArea *fromWidget(QWidget *parent, QWidget *o);
QSize minimumSizeHint() const override;
QSize sizeHint() const override;
};
namespace Ui {
class OptionsDialog;
}