From 21dc38bf82e49346b92aa9e5ce73c1b9926b33b6 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 13 Apr 2024 21:44:24 -0500 Subject: [PATCH] Hotkey settings should be scrollable --- .../qt/ui/settings/hotkey_settings_widget.cpp | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/scwx-qt/source/scwx/qt/ui/settings/hotkey_settings_widget.cpp b/scwx-qt/source/scwx/qt/ui/settings/hotkey_settings_widget.cpp index 6a5aa3e7..a636b78a 100644 --- a/scwx-qt/source/scwx/qt/ui/settings/hotkey_settings_widget.cpp +++ b/scwx-qt/source/scwx/qt/ui/settings/hotkey_settings_widget.cpp @@ -7,7 +7,9 @@ #include #include #include +#include #include +#include namespace scwx { @@ -22,12 +24,25 @@ static const std::string logPrefix_ = class HotkeySettingsWidget::Impl { public: - explicit Impl(HotkeySettingsWidget* self) : - self_ {self}, layout_ {new QGridLayout(self)} + explicit Impl(HotkeySettingsWidget* self) { auto& hotkeySettings = settings::HotkeySettings::Instance(); + gridLayout_ = new QGridLayout(self); + contents_ = new QWidget(self); + contents_->setLayout(gridLayout_); + + scrollArea_ = new QScrollArea(self); + scrollArea_->setHorizontalScrollBarPolicy( + Qt::ScrollBarPolicy::ScrollBarAlwaysOff); + scrollArea_->setWidgetResizable(true); + scrollArea_->setWidget(contents_); + + layout_ = new QVBoxLayout(self); layout_->setContentsMargins(0, 0, 0, 0); + layout_->addWidget(scrollArea_); + + self->setLayout(layout_); int row = 0; @@ -37,15 +52,15 @@ public: QLabel* label = new QLabel(QObject::tr(labelText.c_str()), self); HotkeyEdit* hotkeyEdit = new HotkeyEdit(self); - QToolButton* resetButton = new QToolButton(self_); + QToolButton* resetButton = new QToolButton(self); resetButton->setIcon( QIcon {":/res/icons/font-awesome-6/rotate-left-solid.svg"}); resetButton->setVisible(false); - layout_->addWidget(label, row, 0); - layout_->addWidget(hotkeyEdit, row, 1); - layout_->addWidget(resetButton, row, 2); + gridLayout_->addWidget(label, row, 0); + gridLayout_->addWidget(hotkeyEdit, row, 1); + gridLayout_->addWidget(resetButton, row, 2); // Create settings interface auto result = hotkeys_.emplace( @@ -54,7 +69,7 @@ public: auto& interface = pair.second; // Add to settings list - self_->AddSettingsInterface(&interface); + self->AddSettingsInterface(&interface); auto& hotkeyVariable = hotkeySettings.hotkey(hotkey); interface.SetSettingsVariable(hotkeyVariable); @@ -66,12 +81,14 @@ public: QSpacerItem* spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); - layout_->addItem(spacer, row, 0); + gridLayout_->addItem(spacer, row, 0); } ~Impl() = default; - HotkeySettingsWidget* self_; - QGridLayout* layout_; + QWidget* contents_; + QLayout* layout_; + QScrollArea* scrollArea_ {}; + QGridLayout* gridLayout_ {}; boost::unordered_flat_map>