diff --git a/src/Platform.h b/src/Platform.h index da7ae981..66343ef4 100644 --- a/src/Platform.h +++ b/src/Platform.h @@ -104,6 +104,7 @@ public: QSize minSize = { 200, 200 }; QSize maxSize = Layouting::Item::hardcodedMaximumSize; QSize size = { 1000, 1000 }; + bool createWindow = false; }; class WarningObserver diff --git a/src/qtquick/TestHelpers_qtquick.cpp b/src/qtquick/TestHelpers_qtquick.cpp index 4ef7dba7..b873c04b 100644 --- a/src/qtquick/TestHelpers_qtquick.cpp +++ b/src/qtquick/TestHelpers_qtquick.cpp @@ -74,7 +74,7 @@ View *Platform_qtquick::tests_createView(CreateViewOptions opts, View *parent) auto parentItem = parent ? Views::asQQuickItem(parent) : nullptr; auto newItem = new TestView_qtquick(opts, parentItem); - if (!parentItem) { + if (!parentItem && opts.createWindow) { auto view = new QQuickView(m_qmlEngine, nullptr); view->resize(QSize(800, 800)); diff --git a/tests/main.h b/tests/main.h index 426dc005..7da18460 100644 --- a/tests/main.h +++ b/tests/main.h @@ -42,6 +42,12 @@ std::ostream &operator<<(std::ostream &os, QRect r) using namespace KDDockWidgets; +inline View *createViewAndWindow(Platform::CreateViewOptions opts, View *parent = nullptr) +{ + opts.createWindow = true; + return Platform::instance()->tests_createView(opts, parent); +} + int main(int argc, char **argv) { int exitCode = 0; diff --git a/tests/tst_view.cpp b/tests/tst_view.cpp index 5a0b3b7a..aee5c910 100644 --- a/tests/tst_view.cpp +++ b/tests/tst_view.cpp @@ -13,12 +13,12 @@ TEST_CASE("View::setParent()") { - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); REQUIRE(rootView); REQUIRE(!rootView->isNull()); CHECK(rootView->childViews().isEmpty()); - auto childView = Platform::instance()->tests_createView({}, rootView); + auto childView = createViewAndWindow({}, rootView); CHECK(!rootView->parentView()); REQUIRE(childView->parentView()); @@ -28,7 +28,7 @@ TEST_CASE("View::setParent()") REQUIRE_EQ(children.size(), 1); CHECK(children[0]->equals(childView)); - auto rootView2 = Platform::instance()->tests_createView({}); + auto rootView2 = createViewAndWindow({}); childView->setParent(rootView2); CHECK(childView->parentView()->equals(rootView2)); CHECK(rootView->childViews().isEmpty()); @@ -44,8 +44,8 @@ TEST_CASE("View::setParent()") TEST_CASE("View::windowHandle,rootView,Window::rootView") { - auto rootView = Platform::instance()->tests_createView({}); - auto childView = Platform::instance()->tests_createView({ true }, rootView); + auto rootView = createViewAndWindow({}); + auto childView = createViewAndWindow({ true }, rootView); auto window = rootView->window(); REQUIRE(window); @@ -62,14 +62,14 @@ TEST_CASE("View::windowHandle,rootView,Window::rootView") TEST_CASE("View::isVisible(),show(),hide()") { - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); CHECK(!rootView->isVisible()); rootView->setVisible(true); CHECK(rootView->isVisible()); // Changing parent will make it hide - auto view2 = Platform::instance()->tests_createView({}); + auto view2 = createViewAndWindow({}); view2->setVisible(true); CHECK(view2->isVisible()); view2->setParent(rootView); @@ -100,7 +100,7 @@ TEST_CASE("View::isVisible(),show(),hide()") TEST_CASE("View::geometry,pos,x,y,width,height,rect") { // Test with a top-level view first - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); rootView->show(); const QRect initialGeo = QRect(200, 201, 500, 501); @@ -118,7 +118,7 @@ TEST_CASE("View::geometry,pos,x,y,width,height,rect") CHECK_EQ(rootView->rect(), QRect(QPoint(0, 0), initialGeo.size())); // Now test with child view - auto childView = Platform::instance()->tests_createView({ true }, rootView); + auto childView = createViewAndWindow({ true }, rootView); CHECK(childView->isVisible()); const QRect newChildGeo(1, 2, 300, 301); childView->setGeometry(newChildGeo); @@ -134,7 +134,7 @@ TEST_CASE("View::geometry,pos,x,y,width,height,rect") TEST_CASE("View::sizeHint") { const QSize sizeHint = QSize(200, 200); - auto rootView = Platform::instance()->tests_createView({ true, sizeHint }); + auto rootView = createViewAndWindow({ true, sizeHint }); CHECK_EQ(rootView->sizeHint(), sizeHint); } @@ -142,7 +142,7 @@ TEST_CASE("View::minSize") { const QSize sizeHint = {}; const QSize minSize = { 201, 202 }; - auto rootView = Platform::instance()->tests_createView({ true, sizeHint, minSize }); + auto rootView = createViewAndWindow({ true, sizeHint, minSize }); CHECK_EQ(rootView->minSize(), minSize); const QSize newMinSize = { 301, 302 }; @@ -155,7 +155,7 @@ TEST_CASE("View::maxSize") const QSize sizeHint = {}; const QSize minSize = { 201, 202 }; const QSize maxSize = { 500, 501 }; - auto rootView = Platform::instance()->tests_createView({ true, sizeHint, minSize, maxSize }); + auto rootView = createViewAndWindow({ true, sizeHint, minSize, maxSize }); CHECK_EQ(rootView->maxSizeHint(), maxSize); const QSize newMaxSize = { 301, 302 }; @@ -165,7 +165,7 @@ TEST_CASE("View::maxSize") TEST_CASE("View::objectName") { - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); CHECK_EQ(rootView->objectName(), QString()); const QString newName = QStringLiteral("name1"); @@ -177,7 +177,7 @@ TEST_CASE("View::closeRequested") { // Tests that the closeRequested signal is emitted - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); bool signalArrived = false; KDBindings::ScopedConnection connection = rootView->closeRequested.connect([&signalArrived](QCloseEvent *ev) { signalArrived = true; @@ -190,13 +190,13 @@ TEST_CASE("View::closeRequested") TEST_CASE("View::focusPolicy, Platform::focusedView") { - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); CHECK_EQ(rootView->focusPolicy(), Qt::NoFocus); } TEST_CASE("View::hasFocus") { - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); rootView->show(); rootView->activateWindow(); @@ -209,7 +209,7 @@ TEST_CASE("View::hasFocus") CHECK(rootView->hasFocus()); CHECK(rootView->equals(Platform::instance()->focusedView())); - auto child1 = Platform::instance()->tests_createView({}, rootView); + auto child1 = createViewAndWindow({}, rootView); CHECK(rootView->hasFocus()); CHECK(rootView->equals(Platform::instance()->focusedView())); child1->setVisible(true); diff --git a/tests/tst_viewwrapper.cpp b/tests/tst_viewwrapper.cpp index 243de99a..90f8a788 100644 --- a/tests/tst_viewwrapper.cpp +++ b/tests/tst_viewwrapper.cpp @@ -13,13 +13,13 @@ TEST_CASE("ViewWrapper::setParent") { - auto r = Platform::instance()->tests_createView({}); + auto r = createViewAndWindow({}); auto rootView = r->asWrapper(); REQUIRE(rootView); REQUIRE(!rootView->isNull()); CHECK(rootView->childViews().isEmpty()); - auto c = Platform::instance()->tests_createView({}, r); + auto c = createViewAndWindow({}, r); auto childView = c->asWrapper(); CHECK(!rootView->parentView()); @@ -30,7 +30,7 @@ TEST_CASE("ViewWrapper::setParent") REQUIRE_EQ(children.size(), 1); CHECK(children[0]->equals(childView)); - auto r2 = Platform::instance()->tests_createView({}); + auto r2 = createViewAndWindow({}); auto rootView2 = r2->asWrapper(); childView->setParent(r2); CHECK(childView->parentView()->equals(rootView2)); @@ -47,9 +47,9 @@ TEST_CASE("ViewWrapper::setParent") TEST_CASE("ViewWrapper::windowHandle,rootView,Window::rootView") { - auto r = Platform::instance()->tests_createView({}); + auto r = createViewAndWindow({}); auto rootView = r->asWrapper(); - auto childView = Platform::instance()->tests_createView({ true }, r)->asWrapper(); + auto childView = createViewAndWindow({ true }, r)->asWrapper(); auto window = rootView->window(); REQUIRE(window); @@ -65,13 +65,13 @@ TEST_CASE("ViewWrapper::minSize") { const QSize sizeHint = {}; const QSize minSize = { 201, 202 }; - auto rootView = Platform::instance()->tests_createView({ true, sizeHint, minSize })->asWrapper(); + auto rootView = createViewAndWindow({ true, sizeHint, minSize })->asWrapper(); CHECK_EQ(rootView->minSize(), minSize); } TEST_CASE("ViewWrapper::objectName") { - auto rootView = Platform::instance()->tests_createView({})->asWrapper(); + auto rootView = createViewAndWindow({})->asWrapper(); CHECK_EQ(rootView->objectName(), QString()); const QString newName = QStringLiteral("name1"); @@ -81,13 +81,13 @@ TEST_CASE("ViewWrapper::objectName") TEST_CASE("ViewWrapper::focusPolicy") { - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); CHECK_EQ(rootView->asWrapper()->focusPolicy(), Qt::NoFocus); } TEST_CASE("ViewWrapper::sizePolicy") { - auto rootView = Platform::instance()->tests_createView({}); + auto rootView = createViewAndWindow({}); CHECK_EQ(rootView->asWrapper()->sizePolicy().horizontalPolicy(), QSizePolicy::Preferred); CHECK_EQ(rootView->asWrapper()->sizePolicy().verticalPolicy(), QSizePolicy::Preferred); }