diff --git a/src/qtwidgets/TestHelpers_qtwidgets.cpp b/src/qtwidgets/TestHelpers_qtwidgets.cpp index a9bc6308..5b538d7b 100644 --- a/src/qtwidgets/TestHelpers_qtwidgets.cpp +++ b/src/qtwidgets/TestHelpers_qtwidgets.cpp @@ -32,7 +32,7 @@ public: , m_opts(opts) { create(); - setMinimumSize(opts.minSize); + setMinimumSize(opts.minSize.boundedTo(opts.maxSize)); } QSize sizeHint() const override diff --git a/tests/qtwidgets/tst_qtwidgets.cpp b/tests/qtwidgets/tst_qtwidgets.cpp index 77b011e1..fbaf2972 100644 --- a/tests/qtwidgets/tst_qtwidgets.cpp +++ b/tests/qtwidgets/tst_qtwidgets.cpp @@ -189,7 +189,7 @@ void TestQtWidgets::tst_dockableMainWindows() m1->addDockWidget(dock1, Location_OnTop); auto m2 = new KDDockWidgets::Views::MainWindow_qtwidgets("mainwindow-dockable"); - auto m2Container = createDockWidget("mainwindow-dw", m2); + auto m2Container = createDockWidget("mainwindow-dw", ( View * )m2); auto menubar = m2->menuBar(); menubar->addMenu("File"); menubar->addMenu("View"); @@ -546,8 +546,8 @@ void TestQtWidgets::tst_addToSmallMainWindow6() Platform::instance()->tests_waitForEvent(&container, QEvent::Resize); container.show(); Platform::instance()->tests_waitForResize(&m); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(50, 240))); - auto dock2 = createDockWidget("dock2", new MyWidget2(QSize(50, 240))); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(50, 240) })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, QSize(50, 240) })); m.addDockWidget(dock1, KDDockWidgets::Location_OnBottom); m.addDockWidget(dock2, KDDockWidgets::Location_OnBottom); Platform::instance()->tests_waitForResize(&m); @@ -685,7 +685,7 @@ void TestQtWidgets::tst_deleteOnCloseWhenOnSideBar() EnsureTopLevelsDeleted e; KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_AutoHideSupport); auto m = createMainWindow(QSize(800, 500), MainWindowOption_None); - QPointer dock1 = createDockWidget("dock1", new MyWidget2(QSize(400, 400)), Controllers::DockWidget::Option_DeleteOnClose); + QPointer dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }), Controllers::DockWidget::Option_DeleteOnClose); m->addDockWidget(dock1, Location_OnLeft); dock1->moveToSideBar(); @@ -934,8 +934,8 @@ void TestQtWidgets::tst_negativeAnchorPositionWhenEmbedded() } auto layout = m->multiSplitter(); - auto w1 = new MyWidget2(QSize(400, 400)); - auto w2 = new MyWidget2(QSize(400, 400)); + auto w1 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); + auto w2 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); auto d1 = createDockWidget("1", w1); auto d2 = createDockWidget("2", w2); auto d3 = createDockWidget("3", w2); @@ -1007,10 +1007,8 @@ void TestQtWidgets::tst_maximumSizePolicy() { EnsureTopLevelsDeleted e; - auto widget = new MyWidget2(); const int maxHeight = 250; - widget->setMinimumSize(QSize(200, 200)); - widget->setSizeHint(QSize(250, maxHeight)); + auto widget = Platform::instance()->tests_createView({ true, QSize(250, maxHeight), QSize(200, 200) }); widget->setSizePolicy({ QSizePolicy::Preferred, QSizePolicy::Maximum }); auto dock1 = createDockWidget("dock1", widget); @@ -1049,13 +1047,13 @@ void TestQtWidgets::tst_minSizeChanges() EnsureTopLevelsDeleted e; auto m = createMainWindow(QSize(600, 600), MainWindowOption_None); m->show(); - auto w1 = new MyWidget2(QSize(400, 400)); - auto w2 = new MyWidget2(QSize(400, 400)); + auto w1 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); + auto w2 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); auto d1 = new Controllers::DockWidget("1"); - d1->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w1))); + d1->setGuestView(w1->asWrapper()); auto d2 = new Controllers::DockWidget("2"); - d2->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w2))); + d2->setGuestView(w2->asWrapper()); m->addDockWidget(d1, Location_OnTop); m->addDockWidget(d2, Location_OnTop, nullptr, InitialVisibilityOption::StartHidden); @@ -1084,9 +1082,9 @@ void TestQtWidgets::tst_minSizeChanges() QVERIFY(m->height() >= 1600); // add a small one to the middle - auto w3 = new MyWidget2(QSize(100, 100)); + auto w3 = Platform::instance()->tests_createView({ true, {}, QSize(100, 100) }); auto d3 = new Controllers::DockWidget("3"); - d3->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w3))); + d3->setGuestView(w3->asWrapper()); m->addDockWidget(d3, Location_OnTop, d1); } @@ -1096,23 +1094,22 @@ void TestQtWidgets::tst_maxSizePropagates() EnsureTopLevelsDeleted e; auto dock1 = new Controllers::DockWidget("dock1"); - auto w = new MyWidget2(QSize(200, 200)); - w->setMinimumSize(120, 120); - w->setMaximumSize(500, 500); - dock1->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w))); + auto w = Platform::instance()->tests_createView({ true, {}, QSize(200, 200) }); + w->setMinimumSize(QSize(120, 120)); + w->setMaximumSize(QSize(500, 500)); + dock1->setGuestView(w->asWrapper()); dock1->show(); - Views::ViewWrapper_qtwidgets guestWrapper(w); - QCOMPARE(dock1->view()->minSize(), guestWrapper.minSize()); + QCOMPARE(dock1->view()->minSize(), w->minSize()); QCOMPARE(dock1->view()->maximumSize(), w->maximumSize()); - w->setMinimumSize(121, 121); - w->setMaximumSize(501, 501); + w->setMinimumSize(QSize(121, 121)); + w->setMaximumSize(QSize(501, 501)); Platform::instance()->tests_waitForEvent(w, QEvent::LayoutRequest); - QCOMPARE(dock1->view()->minSize(), guestWrapper.minSize()); + QCOMPARE(dock1->view()->minSize(), w->minSize()); QCOMPARE(dock1->view()->maximumSize(), w->maximumSize()); // Now let's see if our Frame also has proper size-constraints @@ -1178,10 +1175,10 @@ void TestQtWidgets::tst_maxSizeHonouredWhenAnotherDropped() auto m1 = createMainWindow(QSize(1000, 1000), MainWindowOption_None); auto dock1 = new Controllers::DockWidget("dock1"); - auto w = new MyWidget2(QSize(400, 400)); - w->setMinimumSize(120, 100); - w->setMaximumSize(300, 150); - dock1->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w))); + auto w = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); + w->setMinimumSize(QSize(120, 100)); + w->setMaximumSize(QSize(300, 150)); + dock1->setGuestView(w->asWrapper()); m1->addDockWidget(dock1, Location_OnLeft); auto dock2 = new Controllers::DockWidget("dock2"); @@ -1205,8 +1202,8 @@ void TestQtWidgets::tst_addToHiddenMainWindow() { EnsureTopLevelsDeleted e; auto m = createMainWindow(QSize(1000, 1000), MainWindowOption_HasCentralFrame, {}, false); - auto w1 = new MyWidget2(QSize(400, 400)); - auto w2 = new MyWidget2(QSize(400, 400)); + auto w1 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); + auto w2 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); auto d1 = createDockWidget("1", w1); auto d2 = createDockWidget("2", w2); @@ -1225,10 +1222,10 @@ void TestQtWidgets::tst_maxSizePropagates2() auto m1 = createMainWindow(QSize(1000, 1000), MainWindowOption_None); auto dock1 = new Controllers::DockWidget("dock1"); - auto w = new MyWidget2(QSize(200, 200)); - w->setMinimumSize(120, 120); - w->setMaximumSize(300, 500); - dock1->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w))); + auto w = Platform::instance()->tests_createView({ true, {}, QSize(200, 200) }); + w->setMinimumSize(QSize(120, 120)); + w->setMaximumSize(QSize(300, 500)); + dock1->setGuestView(w->asWrapper()); dock1->show(); auto dock2 = new Controllers::DockWidget("dock2"); @@ -1270,10 +1267,10 @@ void TestQtWidgets::tst_maxSizeHonouredWhenDropped() m1->addDockWidget(dock1, Location_OnTop); m1->view()->resize(QSize(2000, 2000)); - auto w2 = new MyWidget2(QSize(400, 400)); - dock2->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w2))); + auto w2 = Platform::instance()->tests_createView({ true, {}, { 0, 0 } }); + dock2->setGuestView(w2->asWrapper()); const int maxWidth = 200; - w2->setMaximumSize(maxWidth, 200); + w2->setMaximumSize(QSize(maxWidth, 200)); m1->addDockWidget(dock2, Location_OnLeft); const int droppedWidth = dock2->dptr()->frame()->width(); QVERIFY(droppedWidth < maxWidth + 50); // +50 to cover any margins and waste by QTabWidget @@ -1387,9 +1384,9 @@ void TestQtWidgets::tst_complex() const int num = 21; for (int i = 0; i < num; ++i) { - auto widget = new MyWidget2(minSizes.at(i)); + auto widget = Platform::instance()->tests_createView({ true, {}, minSizes.at(i) }); auto dw = new Controllers::DockWidget(QString::number(i)); - dw->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(widget))); + dw->setGuestView(widget->asWrapper()); docks << dw; } diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index bc60fc73..1a905902 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -713,9 +713,9 @@ void TestDocks::tst_layoutEqually() auto m = createMainWindow(QSize(800, 500), MainWindowOption_None, mainWindowId); m->setAffinities({ mainWindowId }); - auto dock1 = createDockWidget("Favorite-481", new MyWidget2(QSize(536, 438))); - auto dock2 = createDockWidget("Favorite-482", new MyWidget2(QSize(229, 118))); - auto dock3 = createDockWidget("Favorite-483", new MyWidget2(QSize(356, 90))); + auto dock1 = createDockWidget("Favorite-481", Platform::instance()->tests_createView({ true, {}, QSize(536, 438) })); + auto dock2 = createDockWidget("Favorite-482", Platform::instance()->tests_createView({ true, {}, QSize(229, 118) })); + auto dock3 = createDockWidget("Favorite-483", Platform::instance()->tests_createView({ true, {}, QSize(356, 90) })); m->setContentsMargins(10, 0, 10, 0); dock1->setAffinities({ mainWindowId }); dock2->setAffinities({ mainWindowId }); @@ -854,9 +854,9 @@ void TestDocks::tst_hoverShowsDropIndicators() m->window()->window()->setPosition(500, 800); - auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400))); + auto dock0 = createDockWidget("dock0", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); - auto floatingDockWidget = createDockWidget("floatingDockWidget", new MyWidget2(QSize(400, 400))); + auto floatingDockWidget = createDockWidget("floatingDockWidget", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); m->addDockWidget(dock0, Location_OnLeft); @@ -1246,11 +1246,11 @@ void TestDocks::tst_negativeAnchorPosition() EnsureTopLevelsDeleted e; auto m = createMainWindow(QSize(1002, 806)); - auto w1 = new MyWidget2(QSize(104, 104)); + auto w1 = Platform::instance()->tests_createView({ true, {}, QSize(104, 104) }); w1->resize(994, 718); - auto w2 = new MyWidget2(QSize(133, 343)); + auto w2 = Platform::instance()->tests_createView({ true, {}, QSize(133, 343) }); w2->resize(392, 362); - auto w3 = new MyWidget2(QSize(133, 343)); + auto w3 = Platform::instance()->tests_createView({ true, {}, QSize(133, 343) }); w3->resize(392, 362); Controllers::DropArea *layout = m->multiSplitter(); @@ -1409,10 +1409,11 @@ void TestDocks::tst_negativeAnchorPosition6() auto layout = m->multiSplitter(); - auto w1 = new MyWidget2(QSize(400, 100)); - auto w2 = new MyWidget2(QSize(400, 100)); - auto w3 = new MyWidget2(QSize(400, 100)); - auto w4 = new MyWidget2(QSize(400, 900)); + auto w1 = Platform::instance()->tests_createView({ true, {}, QSize(400, 100) }); + auto w2 = Platform::instance()->tests_createView({ true, {}, QSize(400, 100) }); + auto w3 = Platform::instance()->tests_createView({ true, {}, QSize(400, 100) }); + auto w4 = Platform::instance()->tests_createView({ true, {}, QSize(400, 900) }); + auto d1 = createDockWidget("1", w1); auto d2 = createDockWidget("2", w2); auto d3 = createDockWidget("3", w3); @@ -1439,17 +1440,17 @@ void TestDocks::tst_negativeAnchorPosition7() EnsureTopLevelsDeleted e; auto m = createMainWindow(QSize(501, 500), MainWindowOption_None); m->show(); - auto w1 = new MyWidget2(QSize(400, 400)); - auto w2 = new MyWidget2(QSize(400, 400)); + auto w1 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); + auto w2 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); auto d1 = new Controllers::DockWidget("1"); - d1->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w1))); + d1->setGuestView(w1->asWrapper()); auto d2 = new Controllers::DockWidget("2"); - d2->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w2))); + d2->setGuestView(w2->asWrapper()); - auto w3 = new MyWidget2(QSize(100, 100)); + auto w3 = Platform::instance()->tests_createView({ true, {}, QSize(100, 100) }); auto d3 = new Controllers::DockWidget("3"); - d3->setGuestView(std::shared_ptr(new Views::ViewWrapper_qtwidgets(w3))); + d3->setGuestView(w3->asWrapper()); // Stack 1, 2 m->addDockWidget(d2, Location_OnTop); @@ -2918,10 +2919,10 @@ void TestDocks::tst_addToSmallMainWindow1() { EnsureTopLevelsDeleted e; auto m = createMainWindow(); - auto dock1 = createDockWidget("dock1", new MyWidget2()); - auto dock2 = createDockWidget("dock2", new MyWidget2()); - auto dock3 = createDockWidget("dock3", new MyWidget2()); - auto dock4 = createDockWidget("dock4", new MyWidget2()); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true })); + auto dock3 = createDockWidget("dock3", Platform::instance()->tests_createView({ true })); + auto dock4 = createDockWidget("dock4", Platform::instance()->tests_createView({ true })); const int mainWindowLength = 400; @@ -2964,8 +2965,8 @@ void TestDocks::tst_addToSmallMainWindow2() EnsureTopLevelsDeleted e; auto m = createMainWindow(); auto dropArea = m->dropArea(); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(100, 100))); - auto dock2 = createDockWidget("dock2", new MyWidget2(QSize(100, 100))); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(100, 100) })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, QSize(100, 100) })); m->addDockWidgetAsTab(dock1); m->view()->window()->resize(osWindowMinWidth(), 200); @@ -2990,8 +2991,8 @@ void TestDocks::tst_addToSmallMainWindow3() EnsureTopLevelsDeleted e; auto m = createMainWindow(); auto dropArea = m->dropArea(); - auto dock1 = createDockWidget("dock1", new MyWidget2()); - auto dock2 = createDockWidget("dock2", new MyWidget2()); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, { 0, 0 } })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, { 0, 0 } })); m->addDockWidgetAsTab(dock1); m->view()->window()->resize(osWindowMinWidth(), 200); QTest::qWait(200); @@ -3014,8 +3015,8 @@ void TestDocks::tst_addToSmallMainWindow4() QCOMPARE(m->height(), 100); auto dropArea = m->dropArea(); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(50, 50))); - auto dock2 = createDockWidget("dock2", new MyWidget2(QSize(50, 50))); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(50, 50) })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, QSize(50, 50) })); Controllers::DropArea *layout = dropArea; m->addDockWidget(dock1, KDDockWidgets::Location_OnBottom); Platform::instance()->tests_waitForResize(m->view()); @@ -3036,8 +3037,8 @@ void TestDocks::tst_addToSmallMainWindow5() // Test test shouldn't spit any warnings auto m = createMainWindow(QSize(100, 100), MainWindowOption_None); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(50, 240))); - auto dock2 = createDockWidget("dock2", new MyWidget2(QSize(50, 240))); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(50, 240) })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, QSize(50, 240) })); m->addDockWidget(dock1, KDDockWidgets::Location_OnBottom); m->addDockWidget(dock2, KDDockWidgets::Location_OnBottom); QVERIFY(m->dropArea()->checkSanity()); @@ -3446,8 +3447,8 @@ void TestDocks::tst_rectForDropCrash() auto layout = m->multiSplitter(); - auto w1 = new MyWidget2(QSize(400, 400)); - auto w2 = new MyWidget2(QSize(400, 400)); + auto w1 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); + auto w2 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); auto d1 = createDockWidget("1", w1); auto d2 = createDockWidget("2", w2); @@ -4599,7 +4600,7 @@ void TestDocks::tst_titlebar_getter() m->view()->resize(QSize(500, 500)); m->show(); - auto w1 = new MyWidget2(QSize(400, 400)); + auto w1 = Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }); auto d1 = createDockWidget("1", w1); m->addDockWidget(d1, Location_OnTop); @@ -5771,15 +5772,12 @@ void TestDocks::tst_constraintsPropagateUp() const int minWidth = 500; const int minHeight = 400; const QSize minSz = { minWidth, minHeight }; - auto guestWidget = new MyWidget2(QSize(minWidth, minHeight)); + auto guestWidget = Platform::instance()->tests_createView({ true, {}, QSize(minWidth, minHeight) }); auto dock1 = createDockWidget("dock1", guestWidget); - auto dock2 = createDockWidget("dock2", new MyWidget2(QSize(minWidth, minHeight))); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, QSize(minWidth, minHeight) })); - // TODOv2: Remove - Views::ViewWrapper_qtwidgets guestWrapper(guestWidget); - - QCOMPARE(widgetMinLength(&guestWrapper, Qt::Vertical), minHeight); - QCOMPARE(widgetMinLength(&guestWrapper, Qt::Horizontal), minWidth); + QCOMPARE(widgetMinLength(guestWidget, Qt::Vertical), minHeight); + QCOMPARE(widgetMinLength(guestWidget, Qt::Horizontal), minWidth); QCOMPARE(dock1->view()->minimumWidth(), minWidth); QCOMPARE(dock1->view()->minimumHeight(), minHeight); QCOMPARE(dock1->view()->minSize(), minSz); @@ -5802,9 +5800,9 @@ void TestDocks::tst_constraintsAfterPlaceholder() EnsureTopLevelsDeleted e; auto m = createMainWindow(QSize(500, 500), MainWindowOption_None); const int minHeight = 400; - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(400, minHeight))); - auto dock2 = createDockWidget("dock2", new MyWidget2(QSize(400, minHeight))); - auto dock3 = createDockWidget("dock3", new MyWidget2(QSize(400, minHeight))); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(400, minHeight) })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, QSize(400, minHeight) })); + auto dock3 = createDockWidget("dock3", Platform::instance()->tests_createView({ true, {}, QSize(400, minHeight) })); auto dropArea = m->dropArea(); Controllers::DropArea *layout = dropArea; @@ -5841,7 +5839,7 @@ void TestDocks::tst_dragBySingleTab() // Tests dragging via a tab when there's only 1 tab, and we're using Flag_AlwaysShowTabs EnsureTopLevelsDeleted e; KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_AlwaysShowTabs); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(400, 400))); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); dock1->show(); auto frame1 = dock1->dptr()->frame(); @@ -5882,10 +5880,10 @@ void TestDocks::tst_dragByTabBar() auto m = createMainWindow(); auto dropArea = m->dropArea(); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(400, 400))); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); - auto dock2 = createDockWidget("dock2", new MyWidget2(QSize(400, 400))); - auto dock3 = createDockWidget("dock3", new MyWidget2(QSize(400, 400))); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); + auto dock3 = createDockWidget("dock3", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); m->addDockWidgetAsTab(dock1); m->view()->resize(QSize(osWindowMinWidth(), 200)); @@ -6006,7 +6004,7 @@ void TestDocks::tst_deleteOnClose() { EnsureTopLevelsDeleted e; // Tests that DockWidget::close() deletes itself if Option_DeleteOnClose is set - QPointer dock1 = createDockWidget("1", new MyWidget2(QSize(400, 400)), Controllers::DockWidget::Option_DeleteOnClose); + QPointer dock1 = createDockWidget("1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }), Controllers::DockWidget::Option_DeleteOnClose); dock1->show(); dock1->close(); @@ -6017,8 +6015,8 @@ void TestDocks::tst_deleteOnClose() // Tests that if it's closed via LayoutSaver it's also destroyed when having Option_DeleteOnClose EnsureTopLevelsDeleted e; - QPointer dock1 = createDockWidget("1", new MyWidget2(QSize(400, 400)), Controllers::DockWidget::Option_DeleteOnClose, {}, /*show=*/false); - QPointer dock2 = createDockWidget("2", new MyWidget2(QSize(400, 400)), {}, {}, /*show=*/false); + QPointer dock1 = createDockWidget("1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }), Controllers::DockWidget::Option_DeleteOnClose, {}, /*show=*/false); + QPointer dock2 = createDockWidget("2", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }), {}, {}, /*show=*/false); LayoutSaver saver; const QByteArray saved = saver.serializeLayout(); dock1->show(); @@ -6041,11 +6039,11 @@ void TestDocks::tst_deleteOnClose() EnsureTopLevelsDeleted e; KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_AutoHideSupport); KDDockWidgets::Config::self().setDockWidgetFactoryFunc([](const QString &name) { - return createDockWidget(name, new MyWidget2(QSize(400, 400)), Controllers::DockWidget::Option_DeleteOnClose); + return createDockWidget(name, Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }), Controllers::DockWidget::Option_DeleteOnClose); }); auto m = createMainWindow(QSize(800, 500), MainWindowOption_None); - QPointer dock1 = createDockWidget("1", new MyWidget2(QSize(400, 400)), Controllers::DockWidget::Option_DeleteOnClose); + QPointer dock1 = createDockWidget("1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) }), Controllers::DockWidget::Option_DeleteOnClose); m->addDockWidget(dock1, Location_OnLeft); m->moveToSideBar(dock1); m->overlayOnSideBar(dock1); @@ -6066,9 +6064,9 @@ void TestDocks::tst_toggleAction() { EnsureTopLevelsDeleted e; auto m = createMainWindow(QSize(800, 500), MainWindowOption_None); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(400, 400))); - auto dock2 = createDockWidget("dock2", new MyWidget2(QSize(400, 400))); - auto dock3 = createDockWidget("dock3", new MyWidget2(QSize(400, 400))); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); + auto dock3 = createDockWidget("dock3", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); m->addDockWidget(dock1, Location_OnLeft); m->addDockWidget(dock2, Location_OnRight); @@ -6096,8 +6094,8 @@ void TestDocks::tst_redocksToPreviousTabIndex() KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_AllowReorderTabs); auto m = createMainWindow(QSize(800, 500), MainWindowOption_None); - auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400))); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(400, 400))); + auto dock0 = createDockWidget("dock0", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); m->addDockWidget(dock0, Location_OnLeft); dock0->addDockWidgetAsTab(dock1); @@ -6139,8 +6137,8 @@ void TestDocks::tst_toggleTabbed() EnsureTopLevelsDeleted e; auto m = createMainWindow(QSize(800, 500), MainWindowOption_None); - auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400))); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(400, 400))); + auto dock0 = createDockWidget("dock0", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); m->addDockWidget(dock0, Location_OnBottom); dock0->addDockWidgetAsTab(dock1); @@ -6171,8 +6169,8 @@ void TestDocks::tst_toggleTabbed2() { // Testing the weird bugs reported in #215 EnsureTopLevelsDeleted e; - auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400))); - auto dock1 = createDockWidget("dock1", new MyWidget2(QSize(400, 400))); + auto dock0 = createDockWidget("dock0", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); dock0->addDockWidgetAsTab(dock1); dock0->setAsCurrentTab(); @@ -6199,9 +6197,9 @@ void TestDocks::tst_resizePropagatesEvenly() // one reproduced it: auto m = createMainWindow(QSize(1000, 1000), MainWindowOption_None); - auto dock0 = createDockWidget("dock0", new MyWidget2()); - auto dock1 = createDockWidget("dock1", new MyWidget2()); - auto dock2 = createDockWidget("dock2", new MyWidget2()); + auto dock0 = createDockWidget("dock0", Platform::instance()->tests_createView({ true })); + auto dock1 = createDockWidget("dock1", Platform::instance()->tests_createView({ true })); + auto dock2 = createDockWidget("dock2", Platform::instance()->tests_createView({ true })); m->addDockWidget(dock1, Location_OnLeft); m->addDockWidget(dock2, Location_OnTop, dock1); @@ -6222,7 +6220,7 @@ void TestDocks::tst_addMDIDockWidget() // Test that adding a MDI dock widget doesn't produce any warning auto m = createMainWindow(QSize(800, 500), MainWindowOption_MDI); - auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400))); + auto dock0 = createDockWidget("dock0", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); m->layoutWidget()->asMDILayout()->addDockWidget(dock0, QPoint(0, 0), {}); } @@ -6232,7 +6230,7 @@ void TestDocks::tst_redockToMDIRestoresPosition() EnsureTopLevelsDeleted e; auto m = createMainWindow(QSize(800, 500), MainWindowOption_MDI); - auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400))); + auto dock0 = createDockWidget("dock0", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); auto layoutWidget = m->layoutWidget()->asMDILayout(); const QPoint initialPoint = QPoint(500, 500); @@ -6274,7 +6272,7 @@ void TestDocks::tst_restoreWithNativeTitleBar() EnsureTopLevelsDeleted e; KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_NativeTitleBar); - auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400))); + auto dock0 = createDockWidget("dock0", Platform::instance()->tests_createView({ true, {}, QSize(400, 400) })); dock0->window()->move(100, 100); QVERIFY(!dock0->titleBar()->isVisible()); diff --git a/tests/utils.cpp b/tests/utils.cpp index 6e7bdcf1..e98635ee 100644 --- a/tests/utils.cpp +++ b/tests/utils.cpp @@ -95,6 +95,33 @@ Controllers::DockWidget *KDDockWidgets::Tests::createDockWidget(const QString &n } }; +Controllers::DockWidget *KDDockWidgets::Tests::createDockWidget(const QString &name, View *guest, + Controllers::DockWidget::Options options, + Controllers::DockWidget::LayoutSaverOptions layoutSaverOptions, + bool show, + const QString &affinityName) +{ + guest->setFocusPolicy(Qt::StrongFocus); + auto dock = new Controllers::DockWidget(name, options, layoutSaverOptions); + dock->setAffinityName(affinityName); + dock->setGuestView(guest->asWrapper()); + dock->setObjectName(name); + dock->view()->setGeometry(QRect(0, 0, 400, 400)); + if (show) { + dock->show(); + dock->dptr()->morphIntoFloatingWindow(); + dock->view()->activateWindow(); + Q_ASSERT(dock->window()); + if (Platform::instance()->tests_waitForWindowActive(dock->view()->window(), 1000)) { + return dock; + } + qWarning() << Q_FUNC_INFO << "Couldn't activate window"; + return nullptr; + } else { + return dock; + } +}; + Controllers::DockWidget *KDDockWidgets::Tests::createDockWidget(const QString &name, QColor color) { return createDockWidget(name, new MyWidget(name, color)); diff --git a/tests/utils.h b/tests/utils.h index 1ca20b6c..c8245f12 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -142,6 +142,12 @@ Controllers::DockWidget *createDockWidget(const QString &name, QWidgetOrQuick *w Controllers::DockWidget::Options options = {}, Controllers::DockWidget::LayoutSaverOptions layoutSaverOptions = {}, bool show = true, const QString &affinityName = {}); + +Controllers::DockWidget *createDockWidget(const QString &name, View *guest, + Controllers::DockWidget::Options options = {}, + Controllers::DockWidget::LayoutSaverOptions layoutSaverOptions = {}, + bool show = true, const QString &affinityName = {}); + Controllers::DockWidget *createDockWidget(const QString &name, QColor color = Qt::black); void nestDockWidget(Controllers::DockWidget *dock, Controllers::DropArea *dropArea, Controllers::Frame *relativeTo, @@ -294,40 +300,6 @@ protected: }; namespace { - -class MyWidget2 : public QWidget -{ -public: - explicit MyWidget2(QSize minSz = QSize(1, 1)) - : m_minSz(minSz) - , m_sizeHint(minSz) - { - } - - QSize sizeHint() const override - { - return m_sizeHint; - } - - QSize minimumSizeHint() const override - { - return m_minSz; - } - - void setMinSize(QSize s) - { - m_minSz = s; - updateGeometry(); - } - - void setSizeHint(QSize s) - { - m_sizeHint = s; - } - - QSize m_minSz; - QSize m_sizeHint; -}; } #endif