diff options
Diffstat (limited to 'extra/qt/fix-qgraphicsscene-regression.patch')
-rw-r--r-- | extra/qt/fix-qgraphicsscene-regression.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/extra/qt/fix-qgraphicsscene-regression.patch b/extra/qt/fix-qgraphicsscene-regression.patch new file mode 100644 index 000000000..0c0a28a61 --- /dev/null +++ b/extra/qt/fix-qgraphicsscene-regression.patch @@ -0,0 +1,55 @@ +From 15c14584199dc43e4a309fc331f3144009008128 Mon Sep 17 00:00:00 2001 +From: Jonathan Liu <net147@gmail.com> +Date: Fri, 24 Feb 2012 00:42:34 +1100 +Subject: [PATCH] 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> +--- + src/gui/graphicsview/qgraphicsscene.cpp | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp +index 14c0f3c..d1cdd4f 100644 +--- a/src/gui/graphicsview/qgraphicsscene.cpp ++++ b/src/gui/graphicsview/qgraphicsscene.cpp +@@ -1084,7 +1084,7 @@ void QGraphicsScenePrivate::enableMouseTrackingOnViews() + /*! + 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, + QWidget *widget) const + { +@@ -1093,12 +1093,16 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &/*sc + if (!view) + 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()) + return q->items(pointRect, Qt::IntersectsItemShape, Qt::DescendingOrder); + + 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); + } + +-- +1.7.6 + |