diff --git a/src/qtquick/views/DockWidget_qtquick.cpp b/src/qtquick/views/DockWidget_qtquick.cpp index 2c279767..7348aaea 100644 --- a/src/qtquick/views/DockWidget_qtquick.cpp +++ b/src/qtquick/views/DockWidget_qtquick.cpp @@ -80,6 +80,14 @@ void DockWidget_qtquick::init() auto dw = this->dockWidget(); connect(dw, &Controllers::DockWidget::actualTitleBarChanged, this, &DockWidget_qtquick::actualTitleBarChanged); + + connect(dw, &Controllers::DockWidget::guestViewChanged, this, [this, dw] { + if (auto guest = dw->guestView()) { + // TODOm3: Move this logic to the controller + guest->setParent(this); + guest->setVisible(true); + } + }); } void DockWidget_qtquick::setWidget(const QString &qmlFilename) diff --git a/tests/controllers/tst_dockwidget.cpp b/tests/controllers/tst_dockwidget.cpp index 98809f78..8ecdcab4 100644 --- a/tests/controllers/tst_dockwidget.cpp +++ b/tests/controllers/tst_dockwidget.cpp @@ -13,6 +13,7 @@ #include "controllers/DockWidget.h" #include "ViewFactory.h" #include "Config.h" +#include "Platform.h" TEST_CASE("DockWidget Ctor") { @@ -23,3 +24,20 @@ TEST_CASE("DockWidget Ctor") delete dw; } + +TEST_CASE("setGuestView") +{ + auto dw = Config::self().viewFactory()->createDockWidget("dw1")->asDockWidgetController(); + auto guest = Platform::instance()->tests_createView({ true })->asWrapper(); + dw->setGuestView(guest); + dw->view()->show(); + Platform::instance()->tests_wait(500); // TODOm3: Replace with wait for visible or so. + + CHECK(guest->isVisible()); + CHECK(dw->guestView()->equals(guest)); + REQUIRE(dw->view()->window()); + REQUIRE(guest->window()); + CHECK(dw->view()->window()->equals(guest->window())); + + delete dw; +} \ No newline at end of file