src/gui/graphicsview/qgraphicsitem_p.h
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
--- a/src/gui/graphicsview/qgraphicsitem_p.h	Tue Jul 06 15:10:48 2010 +0300
+++ b/src/gui/graphicsview/qgraphicsitem_p.h	Wed Aug 18 10:37:55 2010 +0300
@@ -300,7 +300,7 @@
     QDeclarativeListProperty<QGraphicsObject> childrenList();
     void setParentItemHelper(QGraphicsItem *parent, const QVariant *newParentVariant,
                              const QVariant *thisPointerVariant);
-    void childrenBoundingRectHelper(QTransform *x, QRectF *rect);
+    void childrenBoundingRectHelper(QTransform *x, QRectF *rect, bool doClip = true);
     void initStyleOption(QStyleOptionGraphicsItem *option, const QTransform &worldTransform,
                          const QRegion &exposedRegion, bool allItems = false) const;
     QRectF effectiveBoundingRect() const;
@@ -482,6 +482,7 @@
     void clearSubFocus(QGraphicsItem *rootItem = 0);
     void resetFocusProxy();
     virtual void subFocusItemChange();
+    virtual void focusScopeItemChange(bool isSubFocusItem);
 
     static void children_append(QDeclarativeListProperty<QGraphicsObject> *list, QGraphicsObject *item);
     static int children_count(QDeclarativeListProperty<QGraphicsObject> *list);
@@ -525,7 +526,9 @@
     QGraphicsItem *focusScopeItem;
     Qt::InputMethodHints imHints;
     QGraphicsItem::PanelModality panelModality;
+#ifndef QT_NO_GESTURES
     QMap<Qt::GestureType, Qt::GestureFlags> gestureContext;
+#endif
 
     // Packed 32 bits
     quint32 acceptedMouseButtons : 5;
@@ -554,7 +557,7 @@
     quint32 dirtyChildrenBoundingRect : 1;
 
     // Packed 32 bits
-    quint32 flags : 17;
+    quint32 flags : 18;
     quint32 paintedViewBoundingRectsNeedRepaint : 1;
     quint32 dirtySceneTransform : 1;
     quint32 geometryChanged : 1;
@@ -569,9 +572,9 @@
     quint32 notifyBoundingRectChanged : 1;
     quint32 notifyInvalidated : 1;
     quint32 mouseSetsFocus : 1;
-    quint32 explicitActivate : 1;
 
     // New 32 bits
+    quint32 explicitActivate : 1;
     quint32 wantsActive : 1;
     quint32 holesInSiblingIndex : 1;
     quint32 sequentialOrdering : 1;
@@ -580,7 +583,7 @@
     quint32 pendingPolish : 1;
     quint32 mayHaveChildWithGraphicsEffect : 1;
     quint32 isDeclarativeItem : 1;
-    quint32 padding : 24;
+    quint32 padding : 23;
 
     // Optional stacking order
     int globalStackingOrder;
@@ -657,7 +660,7 @@
 {
 public:
     QGraphicsItemEffectSourcePrivate(QGraphicsItem *i)
-        : QGraphicsEffectSourcePrivate(), item(i), info(0)
+        : QGraphicsEffectSourcePrivate(), dirtyChildrenBoundingRect(true), item(i), info(0)
     {}
 
     inline void detach()
@@ -708,6 +711,9 @@
                    QGraphicsEffect::PixmapPadMode mode) const;
     QRect paddedEffectRect(Qt::CoordinateSystem system, QGraphicsEffect::PixmapPadMode mode, const QRectF &sourceRect, bool *unpadded = 0) const;
 
+    mutable bool dirtyChildrenBoundingRect;
+    mutable QRectF childrenBoundingRect;
+
     QGraphicsItem *item;
     QGraphicsItemPaintInfo *info;
     QTransform lastEffectTransform;
@@ -865,9 +871,12 @@
 #ifndef QT_NO_GRAPHICSEFFECT
         if (parentp->graphicsEffect) {
             if (updateBoundingRect) {
+                QGraphicsItemEffectSourcePrivate *sourcep =
+                    static_cast<QGraphicsItemEffectSourcePrivate *>(parentp->graphicsEffect->d_func()
+                                                                    ->source->d_func());
+                parentp->dirtyChildrenBoundingRect = 1;
                 parentp->notifyInvalidated = 1;
-                static_cast<QGraphicsItemEffectSourcePrivate *>(parentp->graphicsEffect->d_func()
-                                                                ->source->d_func())->invalidateCache();
+                sourcep->invalidateCache();
             }
             if (parentp->scene && parentp->graphicsEffect->isEnabled()) {
                 parentp->dirty = 1;