summaryrefslogtreecommitdiff
path: root/extra/qt/fix-qgraphicsscene-regression.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/qt/fix-qgraphicsscene-regression.patch')
-rw-r--r--extra/qt/fix-qgraphicsscene-regression.patch55
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
+