diff --git a/src/DockWidgetBase.h b/src/DockWidgetBase.h index 9f3e0093..fe7a8c9f 100644 --- a/src/DockWidgetBase.h +++ b/src/DockWidgetBase.h @@ -139,7 +139,7 @@ public: * call setWidget(A) followed by setWidget(B) then A will have to be deleted by you, while B is * owned by the dock widget. */ - void setWidget(QWidgetOrQuick *widget); + virtual void setWidget(QWidgetOrQuick *widget); /** * @brief returns the widget which this dock widget hosts diff --git a/src/private/quick/DockWidgetQuick.cpp b/src/private/quick/DockWidgetQuick.cpp index ca15ddac..543741cd 100644 --- a/src/private/quick/DockWidgetQuick.cpp +++ b/src/private/quick/DockWidgetQuick.cpp @@ -60,9 +60,15 @@ void DockWidgetQuick::setWidget(const QString &qmlFilename) auto adapter = new QWidgetAdapter(this); guest->setParentItem(adapter); guest->setParent(adapter); - QWidgetAdapter::makeItemFillParent(adapter); - DockWidgetBase::setWidget(adapter); + setWidget(adapter); +} + +void DockWidgetQuick::setWidget(QWidgetOrQuick *widget) +{ + widget->QWidgetAdapter::setParent(this); + QWidgetAdapter::makeItemFillParent(widget); + DockWidgetBase::setWidget(widget); } bool DockWidgetQuick::event(QEvent *e) diff --git a/src/private/quick/DockWidgetQuick.h b/src/private/quick/DockWidgetQuick.h index aa4ffb0c..200b7c47 100644 --- a/src/private/quick/DockWidgetQuick.h +++ b/src/private/quick/DockWidgetQuick.h @@ -54,6 +54,9 @@ public: /// Similar to DockWidgetBase::setWidget(QQuickItem*) void setWidget(const QString &qmlFilename); + /// @reimp + void setWidget(QWidgetOrQuick *widget) override; + protected: bool event(QEvent *e) override; diff --git a/tests/utils.cpp b/tests/utils.cpp index a67f7c76..fb3c2505 100644 --- a/tests/utils.cpp +++ b/tests/utils.cpp @@ -78,7 +78,7 @@ DockWidgetBase *KDDockWidgets::Tests::createDockWidget(const QString &name, QWid w->setFocusPolicy(Qt::StrongFocus); auto dock = new DockWidgetType(name, options); dock->setAffinityName(affinityName); - dock->DockWidgetBase::setWidget(w); + dock->setWidget(w); dock->setObjectName(name); dock->setGeometry(QRect(0, 0, 400, 400)); if (show) {