summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview/qgraphicsview_p.h
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2010-05-04 11:14:10 (GMT)
committerBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2010-05-05 12:34:39 (GMT)
commitc1c7dbf2a066868503dfabcd7113856fa6d2e457 (patch)
tree14de776de377bf93f645a88ce8c73e26ddd89e2f /src/gui/graphicsview/qgraphicsview_p.h
parent66f1a007291209781801a2d3d5f4009bb1963955 (diff)
downloadQt-c1c7dbf2a066868503dfabcd7113856fa6d2e457.zip
Qt-c1c7dbf2a066868503dfabcd7113856fa6d2e457.tar.gz
Qt-c1c7dbf2a066868503dfabcd7113856fa6d2e457.tar.bz2
Performance issue with QGraphicsItem::ItemClipsChildrenToShape.
If the child rect is bigger than the parent rect and parent has the ItemClipsChildrenToShape flag set, then by updating the child, the whole child rect is marked as dirty, resulting in a much larger update area than required. This has a major impact on performance in Orbit/HB, where e.g. item-views typically consist of a container item that clips its children/items to shape. See attached video in QTBUG-9024. Auto test included. Task-number: QTBUG-9024
Diffstat (limited to 'src/gui/graphicsview/qgraphicsview_p.h')
-rw-r--r--src/gui/graphicsview/qgraphicsview_p.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsview_p.h b/src/gui/graphicsview/qgraphicsview_p.h
index 1239ca4..7bd9ecb 100644
--- a/src/gui/graphicsview/qgraphicsview_p.h
+++ b/src/gui/graphicsview/qgraphicsview_p.h
@@ -91,7 +91,8 @@ public:
quint32 mustAllocateStyleOptions : 1;
quint32 mustResizeBackgroundPixmap : 1;
quint32 fullUpdatePending : 1;
- quint32 padding : 19;
+ quint32 hasUpdateClip : 1;
+ quint32 padding : 18;
QRectF sceneRect;
void updateLastCenterPoint();
@@ -102,6 +103,7 @@ public:
QRectF mapRectToScene(const QRect &rect) const;
QRectF mapRectFromScene(const QRectF &rect) const;
+ QRect updateClip;
QPointF mousePressItemPoint;
QPointF mousePressScenePoint;
QPoint mousePressViewPoint;
@@ -195,6 +197,8 @@ public:
#endif
}
+ void setUpdateClip(QGraphicsItem *);
+
inline bool updateRectF(const QRectF &rect)
{
if (rect.isEmpty())