summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview/qgraphicsitem_p.h
diff options
context:
space:
mode:
authorBjoern Erik Nilsen <bjorn.nilsen@nokia.com>2009-03-20 17:06:05 (GMT)
committerAndreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com>2009-04-06 11:49:45 (GMT)
commitc1909321a486621ef196dd4bb3cf354406d86d46 (patch)
treec0f16064fa36870f85a2fcd0b1c066d606ce5cc4 /src/gui/graphicsview/qgraphicsitem_p.h
parent5910dbe6e7a024301d431102703f9abe323ebd13 (diff)
downloadQt-c1909321a486621ef196dd4bb3cf354406d86d46.zip
Qt-c1909321a486621ef196dd4bb3cf354406d86d46.tar.gz
Qt-c1909321a486621ef196dd4bb3cf354406d86d46.tar.bz2
Fixes: Clever invalidating of the cached clip path.
RevBy: Andreas AutoTest: still pass Details: Adds emptyClipPath bit, a cut-off to test if the item has an empty clip path (i.e., is clipped away). Also adds code for invalidating the cache from inside setPos().
Diffstat (limited to 'src/gui/graphicsview/qgraphicsitem_p.h')
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index 98e7c13..f5c3505 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -139,6 +139,8 @@ public:
dirtyChildren(0),
localCollisionHack(0),
dirtyClipPath(1),
+ emptyClipPath(0),
+ inSetPosHelper(0),
globalStackingOrder(-1),
sceneTransformIndex(-1),
q_ptr(0)
@@ -239,12 +241,22 @@ public:
{
cachedClipPath = path;
dirtyClipPath = 0;
+ emptyClipPath = 0;
}
+ inline void setEmptyCachedClipPath()
+ {
+ emptyClipPath = 1;
+ dirtyClipPath = 0;
+ }
+
+ void setEmptyCachedClipPathRecursively(const QRectF &emptyIfOutsideThisRect = QRectF());
+
inline void invalidateCachedClipPath()
- { dirtyClipPath = 1; }
+ { /*static int count = 0 ;qWarning("%i", ++count);*/ dirtyClipPath = 1; emptyClipPath = 0; }
- void invalidateCachedClipPathRecursively(bool childrenOnly = false);
+ void invalidateCachedClipPathRecursively(bool childrenOnly = false, const QRectF &emptyIfOutsideThisRect = QRectF());
+ void updateCachedClipPathFromSetPosHelper();
inline bool isInvisible() const
{
@@ -288,6 +300,8 @@ public:
quint32 dirtyChildren : 1;
quint32 localCollisionHack : 1;
quint32 dirtyClipPath : 1;
+ quint32 emptyClipPath : 1;
+ quint32 inSetPosHelper : 1;
// Optional stacking order
int globalStackingOrder;