tests|qtquick: Don't create lots of spurious QQuickView

Most of the times we just want to create a dock widget which
will be parented immediately, we don't need the window.
This commit is contained in:
Sergio Martins
2022-06-06 10:13:19 +01:00
parent 2beb4982b0
commit e8f390f2ad
5 changed files with 34 additions and 27 deletions

View File

@@ -104,6 +104,7 @@ public:
QSize minSize = { 200, 200 };
QSize maxSize = Layouting::Item::hardcodedMaximumSize;
QSize size = { 1000, 1000 };
bool createWindow = false;
};
class WarningObserver

View File

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

View File

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

View File

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

View File

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