diff options
author | Dimitar Asenov <dimitar.asenov@gmail.com> | 2014-03-12 14:11:45 -0700 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-31 22:54:14 +0200 |
commit | 3270b4490bc420359483cb00ae48e91e261b30e8 (patch) | |
tree | d6e18a39fd0d21d36d10abe6edbfdb68084780ca /src/widgets/graphicsview/qgraphicsitem_p.h | |
parent | d13d03f012b9c0516fa027f4e1ea18c12f1491ca (diff) |
Add a new optimization flag to QGraphicsItem.
The new flag ItemContainsChildrenInShape is similar to the existing
flag ItemClipsChildrenToShape. Setting the new flag makes QGraphicsScene
assume that children are drawn within the shape of the current item
but this is not enforced by clipping. When an application manually
ensures this clipping boundary, setting the new flag removes the
overhead of enforcing the clip with ItemClipsChildrenToShape, while
still allowing other routines to behave more optimially by assuming
children are within the shape of the current item.
[ChangeLog][QtWidgets][QGraphicsItem] Added the
ItemContainsChildrenInShape flag that enables using optimizations
of ItemClipsChildrenToShape without the overhead of enforcing the clip.
Change-Id: I5496fe1ca331b77fd51e0df8a3ace2b8e939eaf2
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
Diffstat (limited to 'src/widgets/graphicsview/qgraphicsitem_p.h')
-rw-r--r-- | src/widgets/graphicsview/qgraphicsitem_p.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/widgets/graphicsview/qgraphicsitem_p.h b/src/widgets/graphicsview/qgraphicsitem_p.h index 3968d89a13..4d1835f178 100644 --- a/src/widgets/graphicsview/qgraphicsitem_p.h +++ b/src/widgets/graphicsview/qgraphicsitem_p.h @@ -172,7 +172,8 @@ public: AncestorHandlesChildEvents = 0x1, AncestorClipsChildren = 0x2, AncestorIgnoresTransformations = 0x4, - AncestorFiltersChildEvents = 0x8 + AncestorFiltersChildEvents = 0x8, + AncestorContainsChildren = 0x10 }; inline QGraphicsItemPrivate() @@ -213,7 +214,6 @@ public: needSortChildren(0), allChildrenDirty(0), fullUpdatePending(0), - dirtyChildrenBoundingRect(1), flags(0), paintedViewBoundingRectsNeedRepaint(0), dirtySceneTransform(1), @@ -239,6 +239,7 @@ public: mayHaveChildWithGraphicsEffect(0), isDeclarativeItem(0), sendParentChangeNotification(0), + dirtyChildrenBoundingRect(1), globalStackingOrder(-1), q_ptr(0) { @@ -544,7 +545,7 @@ public: quint32 handlesChildEvents : 1; quint32 itemDiscovered : 1; quint32 hasCursor : 1; - quint32 ancestorFlags : 4; + quint32 ancestorFlags : 5; quint32 cacheMode : 2; quint32 hasBoundingRegionGranularity : 1; quint32 isWidget : 1; @@ -555,10 +556,9 @@ public: quint32 needSortChildren : 1; quint32 allChildrenDirty : 1; quint32 fullUpdatePending : 1; - quint32 dirtyChildrenBoundingRect : 1; // Packed 32 bits - quint32 flags : 19; + quint32 flags : 20; quint32 paintedViewBoundingRectsNeedRepaint : 1; quint32 dirtySceneTransform : 1; quint32 geometryChanged : 1; @@ -571,9 +571,9 @@ public: quint32 filtersDescendantEvents : 1; quint32 sceneTransformTranslateOnly : 1; quint32 notifyBoundingRectChanged : 1; - quint32 notifyInvalidated : 1; // New 32 bits + quint32 notifyInvalidated : 1; quint32 mouseSetsFocus : 1; quint32 explicitActivate : 1; quint32 wantsActive : 1; @@ -585,7 +585,8 @@ public: quint32 mayHaveChildWithGraphicsEffect : 1; quint32 isDeclarativeItem : 1; quint32 sendParentChangeNotification : 1; - quint32 padding : 21; + quint32 dirtyChildrenBoundingRect : 1; + quint32 padding : 19; // Optional stacking order int globalStackingOrder; |