From 1e4dfc0956f8bad702c9a57b09c2fd4922c6342b Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Fri, 16 May 2025 19:31:00 -0500 Subject: [PATCH] DolphinQt: Fix the WiiPane hinting a larger than required size. --- Source/Core/DolphinQt/QtUtils/QtUtils.h | 14 ++++++++++++++ Source/Core/DolphinQt/Settings/WiiPane.cpp | 9 ++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Source/Core/DolphinQt/QtUtils/QtUtils.h b/Source/Core/DolphinQt/QtUtils/QtUtils.h index 7d490347b6..715a6c67db 100644 --- a/Source/Core/DolphinQt/QtUtils/QtUtils.h +++ b/Source/Core/DolphinQt/QtUtils/QtUtils.h @@ -19,4 +19,18 @@ QWidget* CreateIconWarning(QWidget* parent, QStyle::StandardPixmap standard_pixm // Similar to QWidget::adjustSize except maximum size is 9/10 of screen rather than 2/3. void AdjustSizeWithinScreen(QWidget* widget); +// A QWidget that returns the minimumSizeHint as the primary sizeHint. +// Useful for QListWidget which hints a fairly large height even when entirely empty. +// Usage: QtUtils::MinimumSizeHintWidget +template +class MinimumSizeHintWidget : public Widget +{ +public: + using Widget::Widget; + + // Note: Some widget (e.g. QPushButton) minimumSizeHint implementations themselves use sizeHint, + // which would cause this to stack overflow. + QSize sizeHint() const override { return Widget::minimumSizeHint(); } +}; + } // namespace QtUtils diff --git a/Source/Core/DolphinQt/Settings/WiiPane.cpp b/Source/Core/DolphinQt/Settings/WiiPane.cpp index 5d6bc23f7e..2c9c965b71 100644 --- a/Source/Core/DolphinQt/Settings/WiiPane.cpp +++ b/Source/Core/DolphinQt/Settings/WiiPane.cpp @@ -24,7 +24,6 @@ #include "Common/Config/Config.h" #include "Common/FatFsUtil.h" #include "Common/FileUtil.h" -#include "Common/StringUtil.h" #include "Core/Config/MainSettings.h" #include "Core/Config/SYSCONFSettings.h" @@ -36,6 +35,7 @@ #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/QtUtils/NonDefaultQPushButton.h" #include "DolphinQt/QtUtils/ParallelProgressDialog.h" +#include "DolphinQt/QtUtils/QtUtils.h" #include "DolphinQt/QtUtils/SetWindowDecorations.h" #include "DolphinQt/QtUtils/SignalBlocking.h" #include "DolphinQt/Settings.h" @@ -98,13 +98,11 @@ WiiPane::WiiPane(QWidget* parent) : QWidget(parent) void WiiPane::CreateLayout() { - m_main_layout = new QVBoxLayout; + m_main_layout = new QVBoxLayout{this}; CreateMisc(); CreateSDCard(); CreateWhitelistedUSBPassthroughDevices(); CreateWiiRemoteSettings(); - m_main_layout->addStretch(1); - setLayout(m_main_layout); } void WiiPane::ConnectLayout() @@ -324,7 +322,8 @@ void WiiPane::CreateSDCard() void WiiPane::CreateWhitelistedUSBPassthroughDevices() { - m_whitelist_usb_list = new QListWidget(); + m_whitelist_usb_list = new QtUtils::MinimumSizeHintWidget; + m_whitelist_usb_add_button = new NonDefaultQPushButton(tr("Add...")); m_whitelist_usb_remove_button = new NonDefaultQPushButton(tr("Remove"));