diff --git a/0001-Use-custom-QScrollArea-with-size-hint-not-limited-by.patch b/0001-Use-custom-QScrollArea-with-size-hint-not-limited-by.patch new file mode 100644 index 0000000..0a4bdf9 --- /dev/null +++ b/0001-Use-custom-QScrollArea-with-size-hint-not-limited-by.patch @@ -0,0 +1,87 @@ +From 23ba2b37ef825f0efccc169455f45b0dcdac97cf Mon Sep 17 00:00:00 2001 +From: Valeriy Malov +Date: Wed, 8 Aug 2018 16:42:00 +0300 +Subject: [PATCH] Use custom QScrollArea with size hint not limited by font + size + +Summary: +For some reason original QScrollArea has constraint on a size hint +This causes large KCMShell pages open in relatively small windows, +because QScrollArea inside reports small size hint + +BUG: 389585 + +Test Plan: +patched 5.48.0 with this, tested networkmanager and few other kcms, +they now seem to open in full size (except for kscreen which has custom sizehint, +it probably needs size hint for the QML area specifically, not the whole window; +and except for opengl that has it's own scrollable area which needs a size hint too) + +Reviewers: #frameworks, ngraham + +Reviewed By: ngraham + +Subscribers: ngraham, kde-frameworks-devel + +Tags: #frameworks + +Differential Revision: https://phabricator.kde.org/D14692 +--- + src/kcmultidialog.cpp | 2 +- + src/kcmultidialog.h | 22 ++++++++++++++++++++++ + 2 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/src/kcmultidialog.cpp b/src/kcmultidialog.cpp +index 6526efb..d5f2f10 100644 +--- a/src/kcmultidialog.cpp ++++ b/src/kcmultidialog.cpp +@@ -425,7 +425,7 @@ KPageWidgetItem *KCMultiDialog::addModule(const KCModuleInfo &moduleInfo, + } + + // Create the scroller +- QScrollArea *moduleScroll = new QScrollArea(this); ++ auto *moduleScroll = new UnboundScrollArea(this); + // Prepare the scroll area + moduleScroll->setWidgetResizable(true); + moduleScroll->setFrameStyle(QFrame::NoFrame); +diff --git a/src/kcmultidialog.h b/src/kcmultidialog.h +index c405dc3..2073be5 100644 +--- a/src/kcmultidialog.h ++++ b/src/kcmultidialog.h +@@ -23,6 +23,8 @@ + #ifndef KCMULTIDIALOG_H + #define KCMULTIDIALOG_H + ++#include ++ + #include + #include + +@@ -180,4 +182,24 @@ private: + Q_PRIVATE_SLOT(d_func(), void _k_updateHeader(bool use, const QString &message)) + }; + ++/** ++ * @brief Custom QScrollArea class that doesn't limit its size hint ++ * ++ * See original QScrollArea::sizeHint() function, ++ * where the size hint is bound by 36*24 font heights ++ * ++ * Workaround for https://bugreports.qt.io/browse/QTBUG-10459 ++ */ ++ ++class UnboundScrollArea : public QScrollArea { ++ Q_OBJECT ++public: ++ QSize sizeHint() const override { ++ return widget() ? widget()->sizeHint() : QSize(); ++ } ++ ++ UnboundScrollArea(QWidget * w) : QScrollArea(w) {} ++ virtual ~UnboundScrollArea() = default; ++}; ++ + #endif +-- +2.18.0 + diff --git a/kcmutils.changes b/kcmutils.changes index e81cb21..766de79 100644 --- a/kcmutils.changes +++ b/kcmutils.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Aug 28 16:49:02 UTC 2018 - fabian@ritter-vogt.de + +- Add patch to fix default size of kcms (kde#389585): + * 0001-Use-custom-QScrollArea-with-size-hint-not-limited-by.patch + ------------------------------------------------------------------- Tue Aug 21 10:19:23 UTC 2018 - jengelh@inai.de diff --git a/kcmutils.spec b/kcmutils.spec index 27339e5..27a42df 100644 --- a/kcmutils.spec +++ b/kcmutils.spec @@ -32,6 +32,8 @@ Group: System/GUI/KDE URL: http://www.kde.org Source: http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz Source1: baselibs.conf +# PATCH-FIX-UPSTREAM +Patch1: 0001-Use-custom-QScrollArea-with-size-hint-not-limited-by.patch BuildRequires: cmake >= 3.0 BuildRequires: extra-cmake-modules >= %{_kf5_bugfix_version} BuildRequires: fdupes @@ -83,6 +85,7 @@ created with the KConfigWidgets framework. Development files. %prep %setup -q +%autopatch -p1 %build %cmake_kf5 -d build