summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/graphicsview')
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp14
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h1
3 files changed, 18 insertions, 0 deletions
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 4f77aa8..280c365 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -1262,6 +1262,9 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags)
d_ptr->updateAncestorFlag(ItemClipsChildrenToShape);
}
+ if (d_ptr->scene && oldFlags & ItemClipsChildrenToShape)
+ d_ptr->scene->d_func()->addToUnindexedItems(this);
+
if ((flags & ItemClipsToShape) != (oldFlags & ItemClipsToShape))
d_ptr->invalidateCachedClipPath();
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 0fded89..5c3e9bd 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -448,6 +448,20 @@ void QGraphicsScenePrivate::addToIndex(QGraphicsItem *item)
/*!
\internal
*/
+void QGraphicsScenePrivate::addToUnindexedItems(QGraphicsItem *item)
+{
+ if (indexMethod == QGraphicsScene::BspTreeIndex) {
+ item->d_func()->index = -1;
+ unindexedItems << item;
+
+ for (int i = 0 ; i < item->d_ptr->children.size() ; ++i)
+ addToUnindexedItems(item->d_ptr->children.at(i));
+ }
+}
+
+/*!
+ \internal
+*/
void QGraphicsScenePrivate::removeFromIndex(QGraphicsItem *item)
{
if (indexMethod == QGraphicsScene::BspTreeIndex) {
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index 3c72874..62bcbfb 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -89,6 +89,7 @@ public:
QList<QGraphicsItem *> estimateItemsInRect(const QRectF &rect) const;
void addToIndex(QGraphicsItem *item);
void removeFromIndex(QGraphicsItem *item);
+ void addToUnindexedItems(QGraphicsItem *item);
void resetIndex();
QGraphicsSceneBspTree bspTree;