Magellan Linux

Annotation of /trunk/qt4/patches/qt-4.8.0-fix-qgraphicsscene-regression.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1668 - (hide annotations) (download)
Fri Mar 2 19:29:32 2012 UTC (12 years, 3 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