From 86a2b14921f5bebe614b5024df3d974720884687 Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Sat, 23 May 2020 21:14:11 +0100 Subject: [PATCH] Move more code to GuestWidget --- src/private/multisplitter/GuestWidget.cpp | 21 ++++++++++++--------- src/private/multisplitter/GuestWidget.h | 8 ++++++++ src/private/multisplitter/Item_p.h | 18 ------------------ src/private/widgets/MultiSplitterLayout.cpp | 3 ++- 4 files changed, 22 insertions(+), 28 deletions(-) diff --git a/src/private/multisplitter/GuestWidget.cpp b/src/private/multisplitter/GuestWidget.cpp index 8152beec..b0595c69 100644 --- a/src/private/multisplitter/GuestWidget.cpp +++ b/src/private/multisplitter/GuestWidget.cpp @@ -25,15 +25,7 @@ using namespace Layouting; QSize GuestWidget::minSize() const { - const QWidget *w = asWidget(); - - const int minW = w->minimumWidth() > 0 ? w->minimumWidth() - : w->minimumSizeHint().width(); - - const int minH = w->minimumHeight() > 0 ? w->minimumHeight() - : w->minimumSizeHint().height(); - - return QSize(minW, minH).expandedTo(Item::hardcodedMinimumSize); + return widgetMinSize(asWidget()); } QSize GuestWidget::maxSize() const @@ -45,3 +37,14 @@ QSize GuestWidget::size() const { return asWidget()->size(); } + +QSize GuestWidget::widgetMinSize(const QWidget *w) +{ + const int minW = w->minimumWidth() > 0 ? w->minimumWidth() + : w->minimumSizeHint().width(); + + const int minH = w->minimumHeight() > 0 ? w->minimumHeight() + : w->minimumSizeHint().height(); + + return QSize(minW, minH).expandedTo(Item::hardcodedMinimumSize); +} diff --git a/src/private/multisplitter/GuestWidget.h b/src/private/multisplitter/GuestWidget.h index 3eb53a7a..8885b29c 100644 --- a/src/private/multisplitter/GuestWidget.h +++ b/src/private/multisplitter/GuestWidget.h @@ -42,9 +42,17 @@ public: QSize maxSize() const override; QSize size() const override; + static QSize widgetMinSize(const QWidget *w); + private: QWidget *const m_thisWidget; Q_DISABLE_COPY(GuestWidget) }; +inline int widgetMinLength(const QWidget *w, Qt::Orientation o) +{ + const QSize sz = GuestWidget::widgetMinSize(w); + return o == Qt::Vertical ? sz.height() : sz.width(); +} + } diff --git a/src/private/multisplitter/Item_p.h b/src/private/multisplitter/Item_p.h index 77d97bb4..2e492467 100644 --- a/src/private/multisplitter/Item_p.h +++ b/src/private/multisplitter/Item_p.h @@ -514,22 +514,4 @@ private: Private *const d; }; -/** - * Returns the widget's min size - */ -inline QSize widgetMinSize(const QWidget *w) -{ - const int minW = w->minimumWidth() > 0 ? w->minimumWidth() - : w->minimumSizeHint().width(); - - const int minH = w->minimumHeight() > 0 ? w->minimumHeight() - : w->minimumSizeHint().height(); - - return QSize(minW, minH).expandedTo(Item::hardcodedMinimumSize); -} - -inline int widgetMinLength(const QWidget *w, Qt::Orientation o) { - return length(widgetMinSize(w), o); -} - } diff --git a/src/private/widgets/MultiSplitterLayout.cpp b/src/private/widgets/MultiSplitterLayout.cpp index e7e11f00..abc9803d 100644 --- a/src/private/widgets/MultiSplitterLayout.cpp +++ b/src/private/widgets/MultiSplitterLayout.cpp @@ -28,6 +28,7 @@ #include "Config.h" #include "FrameworkWidgetFactory.h" #include "LayoutSaver.h" +#include "multisplitter/GuestWidget.h" using namespace KDDockWidgets; @@ -379,7 +380,7 @@ QRect MultiSplitterLayout::rectForDrop(const QWidgetOrQuick *widget, Location lo { Layouting::Item item(nullptr); item.setSize(widget->size()); - item.setMinSize(Layouting::widgetMinSize(widget)); + item.setMinSize(Layouting::GuestWidget::widgetMinSize(widget)); item.setMaxSize(widget->maximumSize()); Layouting::ItemContainer *container = relativeTo ? relativeTo->parentContainer()