summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/kernel/qwidget.cpp')
-rw-r--r--src/widgets/kernel/qwidget.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 8b9513e2dd3..dcf53f0e84d 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -10453,10 +10453,23 @@ bool QWidget::hasHeightForWidth() const
QWidget *QWidget::childAt(const QPoint &p) const
{
+ return d_func()->childAt_helper(QPointF(p), false);
+}
+
+/*!
+ \overload
+ \since 6.8
+
+ Returns the visible child widget at point \a p in the widget's own
+ coordinate system.
+*/
+
+QWidget *QWidget::childAt(const QPointF &p) const
+{
return d_func()->childAt_helper(p, false);
}
-QWidget *QWidgetPrivate::childAt_helper(const QPoint &p, bool ignoreChildrenInDestructor) const
+QWidget *QWidgetPrivate::childAt_helper(const QPointF &p, bool ignoreChildrenInDestructor) const
{
if (children.isEmpty())
return nullptr;
@@ -10466,7 +10479,7 @@ QWidget *QWidgetPrivate::childAt_helper(const QPoint &p, bool ignoreChildrenInDe
return childAtRecursiveHelper(p, ignoreChildrenInDestructor);
}
-QWidget *QWidgetPrivate::childAtRecursiveHelper(const QPoint &p, bool ignoreChildrenInDestructor) const
+QWidget *QWidgetPrivate::childAtRecursiveHelper(const QPointF &p, bool ignoreChildrenInDestructor) const
{
for (int i = children.size() - 1; i >= 0; --i) {
QWidget *child = qobject_cast<QWidget *>(children.at(i));
@@ -10476,7 +10489,7 @@ QWidget *QWidgetPrivate::childAtRecursiveHelper(const QPoint &p, bool ignoreChil
}
// Map the point 'p' from parent coordinates to child coordinates.
- QPoint childPoint = p;
+ QPointF childPoint = p;
childPoint -= child->data->crect.topLeft();
// Check if the point hits the child.