diff --git a/CMakeLists.txt b/CMakeLists.txt index cef68328..2c535d0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -361,6 +361,8 @@ if(${PROJECT_NAME}_TESTS) add_test(NAME tst_stack COMMAND tst_stack) add_test(NAME tst_tabbar COMMAND tst_tabbar) add_test(NAME tst_separator COMMAND tst_separator) + add_test(NAME tst_floatingwindow COMMAND tst_floatingwindow) + add_test(NAME tst_dockwidget COMMAND tst_dockwidget) if(NOT ${PROJECT_NAME}_QTQUICK) # tst_multisplitter depends on QWidget diff --git a/src/qtquick/views/DockWidget_qtquick.cpp b/src/qtquick/views/DockWidget_qtquick.cpp index 4ce71279..7cf942c6 100644 --- a/src/qtquick/views/DockWidget_qtquick.cpp +++ b/src/qtquick/views/DockWidget_qtquick.cpp @@ -59,8 +59,6 @@ DockWidget_qtquick::DockWidget_qtquick(Controllers::DockWidget *controller, : View_qtquick(controller, Type::DockWidget, nullptr, windowFlags) , d(new Private(this, controller, engine ? engine : plat()->qmlEngine())) { - // To mimic what QtWidgets does when creating a new QWidget. - setVisible(false); } DockWidget_qtquick::~DockWidget_qtquick() @@ -68,6 +66,12 @@ DockWidget_qtquick::~DockWidget_qtquick() delete d; } +void DockWidget_qtquick::init() +{ + // To mimic what QtWidgets does when creating a new QWidget. + setVisible(false); +} + void DockWidget_qtquick::setWidget(const QString &qmlFilename) { QQuickItem *guest = createItem(d->m_qmlEngine, qmlFilename); diff --git a/src/qtquick/views/DockWidget_qtquick.h b/src/qtquick/views/DockWidget_qtquick.h index 86a5e326..0e60e18f 100644 --- a/src/qtquick/views/DockWidget_qtquick.h +++ b/src/qtquick/views/DockWidget_qtquick.h @@ -67,6 +67,8 @@ public: /// Similar to Controllers::DockWidget::setWidget(QQuickItem*) void setWidget(const QString &qmlFilename); + void init() override; + /// @reimp // TODOv2: Rename to setGuestView Q_INVOKABLE void setWidget(QQuickItem *widget); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3213cfea..64c8b669 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -75,4 +75,10 @@ add_executable(tst_tabbar controllers/tst_tabbar.cpp ${TESTING_RESOURCES}) target_link_libraries(tst_tabbar kddockwidgets) add_executable(tst_separator controllers/tst_separator.cpp ${TESTING_RESOURCES}) -target_link_libraries(tst_separator kddockwidgets) \ No newline at end of file +target_link_libraries(tst_separator kddockwidgets) + +add_executable(tst_floatingwindow controllers/tst_floatingwindow.cpp ${TESTING_RESOURCES}) +target_link_libraries(tst_floatingwindow kddockwidgets) + +add_executable(tst_dockwidget controllers/tst_dockwidget.cpp ${TESTING_RESOURCES}) +target_link_libraries(tst_dockwidget kddockwidgets) diff --git a/tests/controllers/tst_dockwidget.cpp b/tests/controllers/tst_dockwidget.cpp new file mode 100644 index 00000000..026d7788 --- /dev/null +++ b/tests/controllers/tst_dockwidget.cpp @@ -0,0 +1,26 @@ +/* + This file is part of KDDockWidgets. + + SPDX-FileCopyrightText: 2019-2022 Klarälvdalens Datakonsult AB, a KDAB Group company + Author: Sérgio Martins + + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only + + Contact KDAB at for commercial licensing options. +*/ + +#include "../main.h" +#include "controllers/DockWidget.h" + +#include "qtquick/Platform_qtquick.h" + +#include +#include + +TEST_CASE("DockWidget Ctor") +{ + auto dw = new Controllers::DockWidget("dw1"); + dw->view()->show(); + + delete dw; +} diff --git a/tests/controllers/tst_floatingwindow.cpp b/tests/controllers/tst_floatingwindow.cpp new file mode 100644 index 00000000..417831b0 --- /dev/null +++ b/tests/controllers/tst_floatingwindow.cpp @@ -0,0 +1,37 @@ +/* + This file is part of KDDockWidgets. + + SPDX-FileCopyrightText: 2019-2022 Klarälvdalens Datakonsult AB, a KDAB Group company + Author: Sérgio Martins + + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only + + Contact KDAB at for commercial licensing options. +*/ + +#include "../main.h" +#include "controllers/FloatingWindow.h" +#include "controllers/Frame.h" +#include "controllers/DockWidget.h" + +#include "qtquick/Platform_qtquick.h" + +#include +#include + +TEST_CASE("FloatingWindow Ctor") +{ + auto dw = new Controllers::DockWidget("dw1"); + // CHECK(dw->view()->rootView()->is(Type::DockWidget)); + dw->view()->show(); + + /// Wait for FloatingWindow to be created + // Platform::instance()->tests_wait(100); + + auto rootView = dw->view()->rootView(); + REQUIRE(rootView); + + // CHECK(rootView->is(Type::FloatingWindow)); + + delete dw; +}