Move more code to GuestWidget

This commit is contained in:
Sergio Martins
2020-05-23 21:14:11 +01:00
parent 4fab2cf360
commit 86a2b14921
4 changed files with 22 additions and 28 deletions

View File

@@ -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);
}

View File

@@ -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();
}
}

View File

@@ -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);
}
}

View File

@@ -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()