Annotation of /trunk/qt4/patches/qt-4.8.0-fix-qgraphicsscene-regression.patch
Parent Directory | Revision Log
Revision 1668 -
(hide annotations)
(download)
Fri Mar 2 19:29:32 2012 UTC (12 years, 6 months ago) by niro
File size: 2508 byte(s)
Fri Mar 2 19:29:32 2012 UTC (12 years, 6 months ago) by niro
File size: 2508 byte(s)
-added qt-4.8 patches
1 | niro | 1668 | From 15c14584199dc43e4a309fc331f3144009008128 Mon Sep 17 00:00:00 2001 |
2 | From: Jonathan Liu <net147@gmail.com> | ||
3 | Date: Fri, 24 Feb 2012 00:42:34 +1100 | ||
4 | Subject: [PATCH] Revert "Don't rely on mapFromGlobal in | ||
5 | QGraphicsScenePrivate::itemsAtPosition." | ||
6 | |||
7 | This reverts commit 7c0d15a22266a425c9e9ac0120d6774e120fe01e. | ||
8 | The commit caused a regression whereby tooltips may be shown even if the | ||
9 | mouse is not over the item if it has the Qt::ItemIgnoresTransformations | ||
10 | flag and the QGraphicsView had been scaled. | ||
11 | |||
12 | Task-number: QTBUG-17517 | ||
13 | Task-number: QTBUG-22663 | ||
14 | Change-Id: Ib7fd788d9712c5e659fe07182f9505a4eb135ab2 | ||
15 | Reviewed-by: Andy Shaw <andy.shaw@digia.com> | ||
16 | Reviewed-by: Robin Burchell <robin+qt@viroteck.net> | ||
17 | --- | ||
18 | src/gui/graphicsview/qgraphicsscene.cpp | 10 +++++++--- | ||
19 | 1 files changed, 7 insertions(+), 3 deletions(-) | ||
20 | |||
21 | diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp | ||
22 | index 14c0f3c..d1cdd4f 100644 | ||
23 | --- a/src/gui/graphicsview/qgraphicsscene.cpp | ||
24 | +++ b/src/gui/graphicsview/qgraphicsscene.cpp | ||
25 | @@ -1084,7 +1084,7 @@ void QGraphicsScenePrivate::enableMouseTrackingOnViews() | ||
26 | /*! | ||
27 | Returns all items for the screen position in \a event. | ||
28 | */ | ||
29 | -QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &/*screenPos*/, | ||
30 | +QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &screenPos, | ||
31 | const QPointF &scenePos, | ||
32 | QWidget *widget) const | ||
33 | { | ||
34 | @@ -1093,12 +1093,16 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &/*sc | ||
35 | if (!view) | ||
36 | return q->items(scenePos, Qt::IntersectsItemShape, Qt::DescendingOrder, QTransform()); | ||
37 | |||
38 | - const QRectF pointRect(scenePos, QSizeF(1, 1)); | ||
39 | + const QRectF pointRect(QPointF(widget->mapFromGlobal(screenPos)), QSizeF(1, 1)); | ||
40 | if (!view->isTransformed()) | ||
41 | return q->items(pointRect, Qt::IntersectsItemShape, Qt::DescendingOrder); | ||
42 | |||
43 | const QTransform viewTransform = view->viewportTransform(); | ||
44 | - return q->items(pointRect, Qt::IntersectsItemShape, | ||
45 | + if (viewTransform.type() <= QTransform::TxScale) { | ||
46 | + return q->items(viewTransform.inverted().mapRect(pointRect), Qt::IntersectsItemShape, | ||
47 | + Qt::DescendingOrder, viewTransform); | ||
48 | + } | ||
49 | + return q->items(viewTransform.inverted().map(pointRect), Qt::IntersectsItemShape, | ||
50 | Qt::DescendingOrder, viewTransform); | ||
51 | } | ||
52 | |||
53 | -- | ||
54 | 1.7.6 |