diff --git a/src/private/multisplitter/MultiSplitterLayout.cpp b/src/private/multisplitter/MultiSplitterLayout.cpp index ac7d1bfa..5b4344e0 100644 --- a/src/private/multisplitter/MultiSplitterLayout.cpp +++ b/src/private/multisplitter/MultiSplitterLayout.cpp @@ -56,6 +56,9 @@ MultiSplitterLayout::MultiSplitterLayout(MultiSplitter *parent) connect(m_rootItem, &ItemContainer::numItemsChanged, this, &MultiSplitterLayout::widgetCountChanged); connect(m_rootItem, &ItemContainer::numVisibleItemsChanged, this, &MultiSplitterLayout::visibleWidgetCountChanged); + connect(m_rootItem, &ItemContainer::minSizeChanged, this, [this] { + Q_EMIT minimumSizeChanged(minimumSize()); + }); clear(); @@ -272,7 +275,7 @@ int MultiSplitterLayout::numVisibleAnchors() const void MultiSplitterLayout::updateSizeConstraints() { const QSize newMinSize = m_rootItem->minSize(); - qCDebug(sizing) << Q_FUNC_INFO << "Updating size constraints from" << m_minSize + qCDebug(sizing) << Q_FUNC_INFO << "Updating size constraints from" << minimumSize() << "to" << newMinSize; setMinimumSize(newMinSize); @@ -392,6 +395,11 @@ void MultiSplitterLayout::setContentLength(int value, Qt::Orientation o) } } +QSize MultiSplitterLayout::minimumSize() const +{ + return m_rootItem->minSize(); +} + int MultiSplitterLayout::length(Qt::Orientation o) const { return o == Qt::Vertical ? width() @@ -401,11 +409,11 @@ int MultiSplitterLayout::length(Qt::Orientation o) const void MultiSplitterLayout::setMinimumSize(QSize sz) { if (sz != m_rootItem->minSize()) { + setSize(size().expandedTo(m_rootItem->minSize())); // Increase size in case we need to m_rootItem->setMinSize(sz); - setSize(size().expandedTo(m_rootItem->minSize())); // Increase size incase we need to - Q_EMIT minimumSizeChanged(sz); } - qCDebug(sizing) << Q_FUNC_INFO << "minSize = " << m_minSize; + + qCDebug(sizing) << Q_FUNC_INFO << "minSize = " << m_rootItem->minSize(); } const ItemList MultiSplitterLayout::items() const diff --git a/src/private/multisplitter/MultiSplitterLayout_p.h b/src/private/multisplitter/MultiSplitterLayout_p.h index 3a83e469..a3eff0c7 100644 --- a/src/private/multisplitter/MultiSplitterLayout_p.h +++ b/src/private/multisplitter/MultiSplitterLayout_p.h @@ -225,7 +225,7 @@ public: * @brief returns the layout's minimum size * @ref setMinimumSize */ - QSize minimumSize() const { return m_minSize; } + QSize minimumSize() const; /** * @brief getter for the size @@ -349,7 +349,6 @@ private: bool m_restoringPlaceholder = false; bool m_resizing = false; - QSize m_minSize = QSize(0, 0); QPointer m_anchorBeingDragged; Layouting::ItemContainer *const m_rootItem; }; diff --git a/src/private/multisplitter/tests/tst_multisplitter.cpp b/src/private/multisplitter/tests/tst_multisplitter.cpp index 0d53a3ae..c732740b 100644 --- a/src/private/multisplitter/tests/tst_multisplitter.cpp +++ b/src/private/multisplitter/tests/tst_multisplitter.cpp @@ -612,7 +612,6 @@ void TestMultiSplitter::tst_turnIntoPlaceholder() root->insertItem(item3, Location_OnLeft); QVERIFY(root->checkSanity()); - root->dumpLayout(); QCOMPARE(item2->width() + item3->width() + st, root->width()); item2->turnIntoPlaceholder(); QVERIFY(root->checkSanity()); @@ -728,10 +727,7 @@ void TestMultiSplitter::tst_insertAnotherRoot() QVERIFY(item->isVisible()); } QVERIFY(root1->checkSanity()); - root1->dumpLayout(); } - - } QTEST_MAIN(TestMultiSplitter) diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index 349b7ffd..02164f7a 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -251,7 +251,7 @@ private Q_SLOTS: void tst_dock2FloatingWidgetsTabbed(); void tst_close(); void tst_doubleClose(); -// void tst_preventClose(); + void tst_preventClose(); void tst_closeAllDockWidgets(); void tst_dockDockWidgetNested(); void tst_dockFloatingWindowNested(); @@ -771,7 +771,7 @@ void TestDocks::tst_doubleClose() Testing::waitForDeleted(window.data()); } } -#if 0 + void TestDocks::tst_preventClose() { EnsureTopLevelsDeleted e; @@ -800,7 +800,7 @@ void TestDocks::tst_preventClose() dock1->deleteLater(); QVERIFY(Testing::waitForDeleted(dock1)); } -#endif + void TestDocks::tst_dockDockWidgetNested() { EnsureTopLevelsDeleted e;