Revert "Don't rely on mapFromGlobal in QGraphicsScenePrivate::itemsAtPosition."
This reverts commit 7c0d15a22266a425c9e9ac0120d6774e120fe01e. The commit caused a regression whereby tooltips may be shown even if the mouse is not over the item if it has the Qt::ItemIgnoresTransformations flag and the QGraphicsView had been scaled. Task-number: QTBUG-17517 Task-number: QTBUG-22663 Change-Id: Ib7fd788d9712c5e659fe07182f9505a4eb135ab2 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> (cherry picked from commit 15c14584199dc43e4a309fc331f3144009008128)
This commit is contained in:
parent
70578e4fc7
commit
286229ca14
@ -1082,7 +1082,7 @@ void QGraphicsScenePrivate::enableMouseTrackingOnViews()
|
|||||||
/*!
|
/*!
|
||||||
Returns all items for the screen position in \a event.
|
Returns all items for the screen position in \a event.
|
||||||
*/
|
*/
|
||||||
QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &/*screenPos*/,
|
QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &screenPos,
|
||||||
const QPointF &scenePos,
|
const QPointF &scenePos,
|
||||||
QWidget *widget) const
|
QWidget *widget) const
|
||||||
{
|
{
|
||||||
@ -1091,12 +1091,16 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &/*sc
|
|||||||
if (!view)
|
if (!view)
|
||||||
return q->items(scenePos, Qt::IntersectsItemShape, Qt::DescendingOrder, QTransform());
|
return q->items(scenePos, Qt::IntersectsItemShape, Qt::DescendingOrder, QTransform());
|
||||||
|
|
||||||
const QRectF pointRect(scenePos, QSizeF(1, 1));
|
const QRectF pointRect(QPointF(widget->mapFromGlobal(screenPos)), QSizeF(1, 1));
|
||||||
if (!view->isTransformed())
|
if (!view->isTransformed())
|
||||||
return q->items(pointRect, Qt::IntersectsItemShape, Qt::DescendingOrder);
|
return q->items(pointRect, Qt::IntersectsItemShape, Qt::DescendingOrder);
|
||||||
|
|
||||||
const QTransform viewTransform = view->viewportTransform();
|
const QTransform viewTransform = view->viewportTransform();
|
||||||
return q->items(pointRect, Qt::IntersectsItemShape,
|
if (viewTransform.type() <= QTransform::TxScale) {
|
||||||
|
return q->items(viewTransform.inverted().mapRect(pointRect), Qt::IntersectsItemShape,
|
||||||
|
Qt::DescendingOrder, viewTransform);
|
||||||
|
}
|
||||||
|
return q->items(viewTransform.inverted().map(pointRect), Qt::IntersectsItemShape,
|
||||||
Qt::DescendingOrder, viewTransform);
|
Qt::DescendingOrder, viewTransform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user