qml: implement childAt

Added a namespace-level parentWidget() helper, so it works for
both widgets and quick
This commit is contained in:
Sergio Martins
2020-08-06 17:50:44 +01:00
parent 64020568d6
commit 769d34d746
4 changed files with 19 additions and 2 deletions

View File

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

View File

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

View File

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

View File

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