Make DockWidgetQuick::minimumSize()/max virtual
While for QtWidgets we have layouts which propagate the constraints up, for QtQuick we don't, so we need to override minimumSize instead
This commit is contained in:
@@ -87,3 +87,23 @@ bool DockWidgetQuick::event(QEvent *e)
|
||||
|
||||
return DockWidgetBase::event(e);
|
||||
}
|
||||
|
||||
QSize DockWidgetQuick::minimumSize() const
|
||||
{
|
||||
if (QWidgetAdapter *guestWidget = widget()) {
|
||||
// The guests min-size is the same as the widget's, there's no spacing or margins.
|
||||
return guestWidget->minimumSize();
|
||||
}
|
||||
|
||||
return DockWidgetBase::minimumSize();
|
||||
}
|
||||
|
||||
QSize DockWidgetQuick::maximumSize() const
|
||||
{
|
||||
if (QWidgetAdapter *guestWidget = widget()) {
|
||||
// The guests max-size is the same as the widget's, there's no spacing or margins.
|
||||
return guestWidget->maximumSize();
|
||||
}
|
||||
|
||||
return DockWidgetBase::maximumSize();
|
||||
}
|
||||
|
||||
@@ -57,6 +57,12 @@ public:
|
||||
/// @reimp
|
||||
void setWidget(QWidgetOrQuick *widget) override;
|
||||
|
||||
/// @reimp
|
||||
QSize minimumSize() const override;
|
||||
|
||||
/// @reimp
|
||||
QSize maximumSize() const override;
|
||||
|
||||
protected:
|
||||
bool event(QEvent *e) override;
|
||||
|
||||
|
||||
@@ -234,7 +234,7 @@ void QWidgetAdapter::setMinimumSize(QSize sz)
|
||||
void QWidgetAdapter::setMaximumSize(QSize sz)
|
||||
{
|
||||
if (minimumSize() != sz) {
|
||||
setProperty("kddockwidgets_min_size", sz);
|
||||
setProperty("kddockwidgets_max_size", sz);
|
||||
updateGeometry();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,8 +99,8 @@ public:
|
||||
|
||||
QSize size() const { return QQuickItem::size().toSize(); }
|
||||
virtual QSize minimumSizeHint() const { return minimumSize(); }
|
||||
QSize minimumSize() const;
|
||||
QSize maximumSize() const;
|
||||
virtual QSize minimumSize() const;
|
||||
virtual QSize maximumSize() const;
|
||||
int minimumHeight() const { return minimumSize().height(); }
|
||||
int minimumWidth() const { return minimumSize().width(); }
|
||||
bool hasFixedWidth() const { return false; }
|
||||
|
||||
@@ -217,6 +217,10 @@ private Q_SLOTS:
|
||||
void tst_close();
|
||||
void tst_propagateSizeHonoursMinSize();
|
||||
void tst_nonDockable();
|
||||
void tst_floatingAction();
|
||||
void tst_flagDoubleClick();
|
||||
void tst_constraintsPropagateUp();
|
||||
void tst_constraintsAfterPlaceholder();
|
||||
|
||||
void tst_addToSmallMainWindow1();
|
||||
void tst_addToSmallMainWindow2();
|
||||
@@ -236,9 +240,7 @@ private Q_SLOTS:
|
||||
void tst_restoreSimple();
|
||||
void tst_restoreSimplest();
|
||||
void tst_lastFloatingPositionIsRestored();
|
||||
void tst_floatingAction();
|
||||
void tst_flagDoubleClick();
|
||||
void tst_constraintsAfterPlaceholder();
|
||||
|
||||
void tst_minSizeChanges();
|
||||
void tst_maximumSizePolicy();
|
||||
#ifdef KDDOCKWIDGETS_QTWIDGETS
|
||||
@@ -6093,6 +6095,21 @@ void TestDocks::tst_propagateSizeHonoursMinSize()
|
||||
min1 = widgetMinLength(dock1, Qt::Vertical);
|
||||
QVERIFY(dock1->height() >= min1);
|
||||
}
|
||||
void TestDocks::tst_constraintsPropagateUp()
|
||||
{
|
||||
// Mostly for QtQuick, which doesn't have any layouts, so we need to make the propagation
|
||||
// Manually in DockWidgetQuick::minimumSize(), in FrameQuick, etc.
|
||||
|
||||
EnsureTopLevelsDeleted e;
|
||||
const int minHeight = 400;
|
||||
auto guestWidget = new MyWidget2(QSize(400, minHeight));
|
||||
auto dock1 = createDockWidget("dock1", guestWidget);
|
||||
QCOMPARE(widgetMinLength(guestWidget, Qt::Vertical), minHeight);
|
||||
QCOMPARE(dock1->minimumHeight(), minHeight);
|
||||
|
||||
delete dock1->window();
|
||||
|
||||
}
|
||||
|
||||
void TestDocks::tst_constraintsAfterPlaceholder()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user