diff --git a/src/private/DragController.cpp b/src/private/DragController.cpp index 9a08fec7..1c726e8e 100644 --- a/src/private/DragController.cpp +++ b/src/private/DragController.cpp @@ -525,7 +525,7 @@ static DropArea* deepestDropAreaInTopLevel(QWidgetOrQuick *topLevel, QPoint glob if (DockRegistry::self()->affinitiesMatch(dt->affinities(), affinities)) return dt; } - w = w->parentWidget(); + w = KDDockWidgets::parentWidget(w); } return nullptr; diff --git a/src/private/quick/QWidgetAdapter_quick.cpp b/src/private/quick/QWidgetAdapter_quick.cpp index 7f900b7c..47909a9a 100644 --- a/src/private/quick/QWidgetAdapter_quick.cpp +++ b/src/private/quick/QWidgetAdapter_quick.cpp @@ -229,6 +229,11 @@ void QWidgetAdapter::close() } } +QQuickItem *QWidgetAdapter::childAt(QPoint p) const +{ + return QQuickItem::childAt(p.x(), p.y()); +} + void QWidgetAdapter::move(int x, int y) { setX(x); diff --git a/src/private/quick/QWidgetAdapter_quick_p.h b/src/private/quick/QWidgetAdapter_quick_p.h index f5c7e140..1bf902a6 100644 --- a/src/private/quick/QWidgetAdapter_quick_p.h +++ b/src/private/quick/QWidgetAdapter_quick_p.h @@ -36,6 +36,12 @@ QT_END_NAMESPACE namespace KDDockWidgets { +/// @brief Helper since QQuickItem::parentItem() has a different name than QWidget::parentWidget() +inline QQuickItem *parentWidget(QQuickItem *item) +{ + return item ? item->parentItem() : nullptr; +} + class FloatingWindow; class DOCKS_EXPORT QWidgetAdapter : public QQuickItem { @@ -96,7 +102,7 @@ public: void setWindowTitle(const QString &) {} void setWindowIcon(const QIcon &) {} void close(); - QWidgetAdapter* childAt(QPoint) { return nullptr; } + QQuickItem *childAt(QPoint) const; void move(int x, int y); void setParent(QQuickItem*); diff --git a/src/private/widgets/QWidgetAdapter_widgets_p.h b/src/private/widgets/QWidgetAdapter_widgets_p.h index bbd19a0e..50a6cac7 100644 --- a/src/private/widgets/QWidgetAdapter_widgets_p.h +++ b/src/private/widgets/QWidgetAdapter_widgets_p.h @@ -27,6 +27,12 @@ namespace KDDockWidgets { +/// @brief Helper since QQuickItem::parentItem() has a different name than QWidget::parentWidget() +inline QWidget *parentWidget(QWidget *widget) +{ + return widget ? widget->parentWidget() : nullptr; +} + class FloatingWindow; class DOCKS_EXPORT QWidgetAdapter : public QWidget