diff --git a/Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp b/Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp index c9a00a01ed..9289ee9ad5 100644 --- a/Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp +++ b/Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp @@ -56,20 +56,21 @@ void AchievementsWindow::CreateMainLayout() m_settings_widget = new AchievementSettingsWidget(m_tab_widget); m_progress_widget = new AchievementProgressWidget(m_tab_widget); m_leaderboard_widget = new AchievementLeaderboardWidget(m_tab_widget); - m_tab_widget->addTab(GetWrappedWidget(m_settings_widget, this, 125, 100), tr("Settings")); - m_tab_widget->addTab(GetWrappedWidget(m_progress_widget, this, 125, 100), tr("Progress")); - m_tab_widget->setTabVisible(1, is_game_loaded); - m_tab_widget->addTab(GetWrappedWidget(m_leaderboard_widget, this, 125, 100), tr("Leaderboards")); - m_tab_widget->setTabVisible(2, is_game_loaded); + m_tab_widget->addTab(GetWrappedWidget(m_settings_widget), tr("Settings")); + m_tab_widget->addTab(GetWrappedWidget(m_progress_widget), tr("Progress")); + m_tab_widget->addTab(GetWrappedWidget(m_leaderboard_widget), tr("Leaderboards")); m_button_box = new QDialogButtonBox(QDialogButtonBox::Close); - auto* layout = new QVBoxLayout(); + auto* const layout = new QVBoxLayout{this}; layout->addWidget(m_header_widget); layout->addWidget(m_tab_widget); layout->addWidget(m_button_box); - WrapInScrollArea(this, layout); + adjustSize(); + + m_tab_widget->setTabVisible(1, is_game_loaded); + m_tab_widget->setTabVisible(2, is_game_loaded); } void AchievementsWindow::ConnectWidgets() diff --git a/Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp b/Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp index aa5a0943e0..3ec1f31568 100644 --- a/Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp +++ b/Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp @@ -18,14 +18,12 @@ #include "Common/StringUtil.h" #include "Core/CheatSearch.h" -#include "Core/Config/MainSettings.h" #include "Core/Core.h" #include "Core/HW/Memmap.h" #include "Core/PowerPC/MMU.h" #include "Core/System.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/QtUtils/NonDefaultQPushButton.h" -#include "DolphinQt/QtUtils/WrapInScrollArea.h" CheatSearchFactoryWidget::CheatSearchFactoryWidget() { @@ -40,7 +38,7 @@ Q_DECLARE_METATYPE(Cheats::DataType); void CheatSearchFactoryWidget::CreateWidgets() { - auto* layout = new QVBoxLayout(); + auto* const layout = new QVBoxLayout{this}; auto* address_space_group = new QGroupBox(tr("Address Space")); auto* address_space_layout = new QVBoxLayout(); @@ -124,8 +122,6 @@ void CheatSearchFactoryWidget::CreateWidgets() layout->addWidget(m_new_search); layout->addStretch(); - - WrapInScrollArea(this, layout); } void CheatSearchFactoryWidget::ConnectWidgets() diff --git a/Source/Core/DolphinQt/CheatSearchFactoryWidget.h b/Source/Core/DolphinQt/CheatSearchFactoryWidget.h index 576f7f97ad..12e590da15 100644 --- a/Source/Core/DolphinQt/CheatSearchFactoryWidget.h +++ b/Source/Core/DolphinQt/CheatSearchFactoryWidget.h @@ -3,8 +3,6 @@ #pragma once -#include - #include #include "Core/CheatSearch.h" diff --git a/Source/Core/DolphinQt/CheatSearchWidget.cpp b/Source/Core/DolphinQt/CheatSearchWidget.cpp index df4cb8dd11..bbd8675f3e 100644 --- a/Source/Core/DolphinQt/CheatSearchWidget.cpp +++ b/Source/Core/DolphinQt/CheatSearchWidget.cpp @@ -249,7 +249,7 @@ void CheatSearchWidget::CreateWidgets() checkboxes_layout->addWidget(m_autoupdate_current_values); checkboxes_layout->setStretchFactor(m_autoupdate_current_values, 2); - QVBoxLayout* layout = new QVBoxLayout(); + auto* const layout = new QVBoxLayout{this}; layout->addWidget(session_info_label); layout->addWidget(instructions_label); layout->addLayout(value_layout); @@ -258,8 +258,6 @@ void CheatSearchWidget::CreateWidgets() layout->addWidget(m_info_label_1); layout->addWidget(m_info_label_2); layout->addWidget(m_address_table); - - WrapInScrollArea(this, layout); } void CheatSearchWidget::ConnectWidgets() diff --git a/Source/Core/DolphinQt/CheatSearchWidget.h b/Source/Core/DolphinQt/CheatSearchWidget.h index f6c4576d87..f7427ca6a6 100644 --- a/Source/Core/DolphinQt/CheatSearchWidget.h +++ b/Source/Core/DolphinQt/CheatSearchWidget.h @@ -5,19 +5,13 @@ #include -#include -#include #include #include -#include #include "Common/CommonTypes.h" +#include "Core/ActionReplay.h" #include "Core/CheatSearch.h" -namespace ActionReplay -{ -struct ARCode; -} namespace Core { class System; @@ -57,7 +51,7 @@ public: signals: void ActionReplayCodeGenerated(const ActionReplay::ARCode& ar_code); void RequestWatch(QString name, u32 address); - void ShowMemory(const u32 address); + void ShowMemory(u32 address); private: void CreateWidgets(); diff --git a/Source/Core/DolphinQt/CheatsManager.cpp b/Source/Core/DolphinQt/CheatsManager.cpp index 67e177cef6..4ad038013f 100644 --- a/Source/Core/DolphinQt/CheatsManager.cpp +++ b/Source/Core/DolphinQt/CheatsManager.cpp @@ -3,17 +3,15 @@ #include "DolphinQt/CheatsManager.h" -#include - #include #include -#include "Core/ActionReplay.h" #include "Core/CheatSearch.h" #include "Core/ConfigManager.h" #include "Core/Core.h" -#include "UICommon/GameFile.h" +#include "DolphinQt/QtUtils/QtUtils.h" +#include "DolphinQt/QtUtils/WrapInScrollArea.h" #include "DolphinQt/CheatSearchFactoryWidget.h" #include "DolphinQt/CheatSearchWidget.h" @@ -36,6 +34,8 @@ CheatsManager::CheatsManager(Core::System& system, QWidget* parent) CreateWidgets(); ConnectWidgets(); + QtUtils::AdjustSizeWithinScreen(this); + auto& settings = Settings::GetQSettings(); restoreGeometry(settings.value(QStringLiteral("cheatsmanager/geometry")).toByteArray()); } @@ -124,18 +124,19 @@ void CheatsManager::CreateWidgets() m_tab_widget = new PartiallyClosableTabWidget; m_button_box = new QDialogButtonBox(QDialogButtonBox::Close); - int tab_index; + int tab_index = 0; m_ar_code = new ARCodeWidget(m_game_id, m_revision, false); - tab_index = m_tab_widget->addTab(m_ar_code, tr("AR Code")); + tab_index = m_tab_widget->addTab(GetWrappedWidget(m_ar_code), tr("AR Code")); m_tab_widget->setTabUnclosable(tab_index); m_gecko_code = new GeckoCodeWidget(m_game_id, m_game_tdb_id, m_revision, false); - tab_index = m_tab_widget->addTab(m_gecko_code, tr("Gecko Codes")); + tab_index = m_tab_widget->addTab(GetWrappedWidget(m_gecko_code), tr("Gecko Codes")); m_tab_widget->setTabUnclosable(tab_index); m_cheat_search_new = new CheatSearchFactoryWidget(); - tab_index = m_tab_widget->addTab(m_cheat_search_new, tr("Start New Cheat Search")); + tab_index = + m_tab_widget->addTab(GetWrappedWidget(m_cheat_search_new), tr("Start New Cheat Search")); m_tab_widget->setTabUnclosable(tab_index); auto* layout = new QVBoxLayout; diff --git a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp index f73017d723..17b0f61b4b 100644 --- a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp +++ b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp @@ -24,9 +24,6 @@ #include "DolphinQt/Config/HardcoreWarningWidget.h" #include "DolphinQt/QtUtils/NonDefaultQPushButton.h" #include "DolphinQt/QtUtils/SetWindowDecorations.h" -#include "DolphinQt/QtUtils/WrapInScrollArea.h" - -#include "UICommon/GameFile.h" ARCodeWidget::ARCodeWidget(std::string game_id, u16 game_revision, bool restart_required) : m_game_id(std::move(game_id)), m_game_revision(game_revision), @@ -77,7 +74,7 @@ void ARCodeWidget::CreateWidgets() button_layout->addWidget(m_code_edit); button_layout->addWidget(m_code_remove); - QVBoxLayout* layout = new QVBoxLayout; + auto* const layout = new QVBoxLayout{this}; layout->addWidget(m_warning); #ifdef USE_RETRO_ACHIEVEMENTS @@ -85,8 +82,6 @@ void ARCodeWidget::CreateWidgets() #endif // USE_RETRO_ACHIEVEMENTS layout->addWidget(m_code_list); layout->addLayout(button_layout); - - WrapInScrollArea(this, layout); } void ARCodeWidget::ConnectWidgets() diff --git a/Source/Core/DolphinQt/Config/ControllersWindow.cpp b/Source/Core/DolphinQt/Config/ControllersWindow.cpp index 2470910e8e..5f6029a977 100644 --- a/Source/Core/DolphinQt/Config/ControllersWindow.cpp +++ b/Source/Core/DolphinQt/Config/ControllersWindow.cpp @@ -9,6 +9,7 @@ #include "DolphinQt/Config/CommonControllersWidget.h" #include "DolphinQt/Config/GamecubeControllersWidget.h" #include "DolphinQt/Config/WiimoteControllersWidget.h" +#include "DolphinQt/QtUtils/QtUtils.h" #include "DolphinQt/QtUtils/WrapInScrollArea.h" ControllersWindow::ControllersWindow(QWidget* parent) : QDialog(parent) @@ -41,6 +42,7 @@ void ControllersWindow::CreateMainLayout() layout->addWidget(m_button_box); WrapInScrollArea(this, layout); + QtUtils::AdjustSizeWithinScreen(this); } void ControllersWindow::ConnectWidgets() diff --git a/Source/Core/DolphinQt/Config/GameConfigWidget.cpp b/Source/Core/DolphinQt/Config/GameConfigWidget.cpp index a96046f916..4505605de0 100644 --- a/Source/Core/DolphinQt/Config/GameConfigWidget.cpp +++ b/Source/Core/DolphinQt/Config/GameConfigWidget.cpp @@ -205,14 +205,11 @@ void GameConfigWidget::CreateWidgets() auto* gfx_tabs = new QTabWidget; - gfx_tabs->addTab(GetWrappedWidget(new GeneralWidget(this, m_layer.get()), this, 125, 100), - tr("General")); - gfx_tabs->addTab(GetWrappedWidget(new EnhancementsWidget(this, m_layer.get()), this, 125, 100), + gfx_tabs->addTab(GetWrappedWidget(new GeneralWidget(this, m_layer.get())), tr("General")); + gfx_tabs->addTab(GetWrappedWidget(new EnhancementsWidget(this, m_layer.get())), tr("Enhancements")); - gfx_tabs->addTab(GetWrappedWidget(new HacksWidget(this, m_layer.get()), this, 125, 100), - tr("Hacks")); - gfx_tabs->addTab(GetWrappedWidget(new AdvancedWidget(this, m_layer.get()), this, 125, 100), - tr("Advanced")); + gfx_tabs->addTab(GetWrappedWidget(new HacksWidget(this, m_layer.get())), tr("Hacks")); + gfx_tabs->addTab(GetWrappedWidget(new AdvancedWidget(this, m_layer.get())), tr("Advanced")); const int editor_index = tab_widget->addTab(advanced_widget, tr("Editor")); gfx_layout->addWidget(gfx_tabs); diff --git a/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp b/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp index bce1e89b68..6b7e487bde 100644 --- a/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp +++ b/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp @@ -32,8 +32,6 @@ #include "DolphinQt/QtUtils/SetWindowDecorations.h" #include "DolphinQt/QtUtils/WrapInScrollArea.h" -#include "UICommon/GameFile.h" - GeckoCodeWidget::GeckoCodeWidget(std::string game_id, std::string gametdb_id, u16 game_revision, bool restart_required) : m_game_id(std::move(game_id)), m_gametdb_id(std::move(gametdb_id)), @@ -105,7 +103,7 @@ void GeckoCodeWidget::CreateWidgets() m_download_codes->setToolTip(tr("Download Codes from the WiiRD Database")); - auto* layout = new QVBoxLayout; + auto* const layout = new QVBoxLayout{this}; layout->addWidget(m_warning); #ifdef USE_RETRO_ACHIEVEMENTS @@ -139,8 +137,6 @@ void GeckoCodeWidget::CreateWidgets() btn_layout->addWidget(m_download_codes); layout->addLayout(btn_layout); - - WrapInScrollArea(this, layout); } void GeckoCodeWidget::ConnectWidgets() diff --git a/Source/Core/DolphinQt/Config/Graphics/ColorCorrectionConfigWindow.cpp b/Source/Core/DolphinQt/Config/Graphics/ColorCorrectionConfigWindow.cpp index 082e5dcc90..62f2437b57 100644 --- a/Source/Core/DolphinQt/Config/Graphics/ColorCorrectionConfigWindow.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/ColorCorrectionConfigWindow.cpp @@ -156,8 +156,8 @@ void ColorCorrectionConfigWindow::Create() layout->addStretch(); layout->addWidget(m_button_box); - setLayout(layout); WrapInScrollArea(this, layout); + adjustSize(); } void ColorCorrectionConfigWindow::ConnectWidgets() diff --git a/Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp b/Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp index 627dd11b75..41d2081e38 100644 --- a/Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp @@ -12,17 +12,16 @@ #include "Common/Config/Config.h" #include "Core/Config/MainSettings.h" -#include "Core/ConfigManager.h" #include "DolphinQt/Config/Graphics/AdvancedWidget.h" #include "DolphinQt/Config/Graphics/EnhancementsWidget.h" #include "DolphinQt/Config/Graphics/GeneralWidget.h" #include "DolphinQt/Config/Graphics/HacksWidget.h" #include "DolphinQt/MainWindow.h" +#include "DolphinQt/QtUtils/QtUtils.h" #include "DolphinQt/QtUtils/WrapInScrollArea.h" #include "VideoCommon/VideoBackendBase.h" -#include "VideoCommon/VideoConfig.h" GraphicsWindow::GraphicsWindow(MainWindow* parent) : QDialog(parent), m_main_window(parent) { @@ -32,6 +31,8 @@ GraphicsWindow::GraphicsWindow(MainWindow* parent) : QDialog(parent), m_main_win setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); OnBackendChanged(QString::fromStdString(Config::Get(Config::MAIN_GFX_BACKEND))); + + QtUtils::AdjustSizeWithinScreen(this); } void GraphicsWindow::CreateMainLayout() @@ -52,10 +53,10 @@ void GraphicsWindow::CreateMainLayout() connect(general_widget, &GeneralWidget::BackendChanged, this, &GraphicsWindow::OnBackendChanged); - QWidget* const wrapped_general = GetWrappedWidget(general_widget, this, 50, 100); - QWidget* const wrapped_enhancements = GetWrappedWidget(enhancements_widget, this, 50, 100); - QWidget* const wrapped_hacks = GetWrappedWidget(hacks_widget, this, 50, 100); - QWidget* const wrapped_advanced = GetWrappedWidget(advanced_widget, this, 50, 100); + QWidget* const wrapped_general = GetWrappedWidget(general_widget); + QWidget* const wrapped_enhancements = GetWrappedWidget(enhancements_widget); + QWidget* const wrapped_hacks = GetWrappedWidget(hacks_widget); + QWidget* const wrapped_advanced = GetWrappedWidget(advanced_widget); tab_widget->addTab(wrapped_general, tr("General")); tab_widget->addTab(wrapped_enhancements, tr("Enhancements")); diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp index aab247dfa0..7c5cb41939 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp @@ -50,6 +50,7 @@ #include "DolphinQt/Config/Mapping/WiimoteEmuMotionControlIMU.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/QtUtils/NonDefaultQPushButton.h" +#include "DolphinQt/QtUtils/QtUtils.h" #include "DolphinQt/QtUtils/SetWindowDecorations.h" #include "DolphinQt/QtUtils/WindowActivationEventFilter.h" #include "DolphinQt/QtUtils/WrapInScrollArea.h" @@ -96,6 +97,8 @@ MappingWindow::MappingWindow(QWidget* parent, Type type, int port_num) [] { HotkeyManagerEmu::Enable(false); }); MappingCommon::CreateMappingProcessor(this); + + QtUtils::AdjustSizeWithinScreen(this); } void MappingWindow::CreateDevicesLayout() @@ -543,7 +546,7 @@ void MappingWindow::PopulateProfileSelection() QWidget* MappingWindow::AddWidget(const QString& name, QWidget* widget) { - QWidget* wrapper = GetWrappedWidget(widget, this, 150, 210); + auto* const wrapper = GetWrappedWidget(widget); m_tab_widget->addTab(wrapper, name); return wrapper; } diff --git a/Source/Core/DolphinQt/Config/SettingsWindow.cpp b/Source/Core/DolphinQt/Config/SettingsWindow.cpp index f3618cc810..3bf63f955a 100644 --- a/Source/Core/DolphinQt/Config/SettingsWindow.cpp +++ b/Source/Core/DolphinQt/Config/SettingsWindow.cpp @@ -110,7 +110,7 @@ void StackedSettingsWindow::OnDoneCreatingPanes() // Make sure the first item is actually selected by default. ActivatePane(0); // Take on the preferred size. - adjustSize(); + QtUtils::AdjustSizeWithinScreen(this); } void StackedSettingsWindow::AddPane(QWidget* widget, const QString& name) diff --git a/Source/Core/DolphinQt/QtUtils/QtUtils.cpp b/Source/Core/DolphinQt/QtUtils/QtUtils.cpp index fa90dde215..5914448a91 100644 --- a/Source/Core/DolphinQt/QtUtils/QtUtils.cpp +++ b/Source/Core/DolphinQt/QtUtils/QtUtils.cpp @@ -6,6 +6,7 @@ #include #include #include +#include namespace QtUtils { @@ -35,4 +36,13 @@ QWidget* CreateIconWarning(QWidget* parent, QStyle::StandardPixmap standard_pixm return widget; } +void AdjustSizeWithinScreen(QWidget* widget) +{ + const auto screen_size = widget->screen()->availableSize(); + + const auto adj_screen_size = screen_size * 9 / 10; + + widget->resize(widget->sizeHint().boundedTo(adj_screen_size)); +} + } // namespace QtUtils diff --git a/Source/Core/DolphinQt/QtUtils/QtUtils.h b/Source/Core/DolphinQt/QtUtils/QtUtils.h index 53251b3b4d..7d490347b6 100644 --- a/Source/Core/DolphinQt/QtUtils/QtUtils.h +++ b/Source/Core/DolphinQt/QtUtils/QtUtils.h @@ -16,4 +16,7 @@ void ShowFourDigitYear(QDateTimeEdit* widget); QWidget* CreateIconWarning(QWidget* parent, QStyle::StandardPixmap standard_pixmap, QLabel* label); +// Similar to QWidget::adjustSize except maximum size is 9/10 of screen rather than 2/3. +void AdjustSizeWithinScreen(QWidget* widget); + } // namespace QtUtils diff --git a/Source/Core/DolphinQt/QtUtils/WrapInScrollArea.cpp b/Source/Core/DolphinQt/QtUtils/WrapInScrollArea.cpp index 4a8910502c..0f75706b58 100644 --- a/Source/Core/DolphinQt/QtUtils/WrapInScrollArea.cpp +++ b/Source/Core/DolphinQt/QtUtils/WrapInScrollArea.cpp @@ -7,43 +7,59 @@ #include #include #include +#include #include #include -QWidget* GetWrappedWidget(QWidget* wrapped_widget, QWidget* to_resize, int margin_width, - int margin_height) +namespace { - auto* scroll = new QScrollArea; - scroll->setWidget(wrapped_widget); - scroll->setWidgetResizable(true); - scroll->setFrameStyle(QFrame::NoFrame); - if (to_resize != nullptr) +// This scroll area prefers the size of its underlying widget. +class HintingScrollArea final : public QScrollArea +{ +public: + HintingScrollArea() { - // For some reason width() is bigger than it needs to be. - auto min_size = wrapped_widget->minimumSizeHint(); - int recommended_width = min_size.width() + margin_width; - int recommended_height = min_size.height() + margin_height; + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + setWidgetResizable(true); - to_resize->resize(std::max(recommended_width, to_resize->width()), - std::max(recommended_height, to_resize->height())); + // Make things not look horrendous on Windows. + setFrameStyle(QFrame::NoFrame); } + QSize sizeHint() const override + { + // Including the scrollbars in our hint can prevent + // a window undersized in one direction gaining unnecessary scrolling in both directions. + const auto scrollbar_padding = + QSize{verticalScrollBar()->sizeHint().width(), horizontalScrollBar()->sizeHint().height()}; + + const auto size_hint = widget()->sizeHint(); + + return size_hint + scrollbar_padding; + } +}; + +} // namespace + +QWidget* GetWrappedWidget(QWidget* wrapped_widget) +{ + auto* const scroll = new HintingScrollArea; + scroll->setWidget(wrapped_widget); + + // Workaround for transparency issues on macOS. Not sure if this is still needed. scroll->viewport()->setAutoFillBackground(false); wrapped_widget->setAutoFillBackground(false); return scroll; } -void WrapInScrollArea(QWidget* parent, QLayout* wrapped_layout, QWidget* to_resize) +void WrapInScrollArea(QWidget* parent, QLayout* wrapped_layout) { - if (to_resize == nullptr) - to_resize = parent; - auto* widget = new QWidget; widget->setLayout(wrapped_layout); - auto* scroll_area = GetWrappedWidget(widget, to_resize, 0, 0); + auto* scroll_area = GetWrappedWidget(widget); auto* scroll_layout = new QVBoxLayout; scroll_layout->addWidget(scroll_area); diff --git a/Source/Core/DolphinQt/QtUtils/WrapInScrollArea.h b/Source/Core/DolphinQt/QtUtils/WrapInScrollArea.h index 389e9aa5ce..61607cea3a 100644 --- a/Source/Core/DolphinQt/QtUtils/WrapInScrollArea.h +++ b/Source/Core/DolphinQt/QtUtils/WrapInScrollArea.h @@ -6,8 +6,8 @@ class QLayout; class QWidget; -QWidget* GetWrappedWidget(QWidget* wrapped_widget, QWidget* to_resize = nullptr, - int margin_width = 50, int margin_height = 50); +// Puts the given widget in a QScrollArea and returns that. +QWidget* GetWrappedWidget(QWidget* wrapped_widget); -// Wrap wrapped_layout in a QScrollArea and fill the parent widget with it -void WrapInScrollArea(QWidget* parent, QLayout* wrapped_layout, QWidget* to_resize = nullptr); +// Wrap wrapped_layout in a QScrollArea and fill the parent widget with it. +void WrapInScrollArea(QWidget* parent, QLayout* wrapped_layout);