44 lines
1.7 KiB
Diff
44 lines
1.7 KiB
Diff
|
From 63839f0ca3836995cda2fb94cf7dd724d6f6ca52 Mon Sep 17 00:00:00 2001
|
||
|
From: Alexis Menard <alexis.menard@nokia.com>
|
||
|
Date: Thu, 26 Nov 2009 13:47:34 +0100
|
||
|
Subject: [PATCH] Fix a crash in KDE/Plasma with QGraphicsView. TopLevel list of items
|
||
|
was corrupted.
|
||
|
|
||
|
This nasty bug was triggered when the index sort the top level list of
|
||
|
items. We forgot to set the flag topLevelSequentialOrdering to false
|
||
|
so when an item was removed from the top level list it was using the
|
||
|
sibling index which can be not valid anymore since the list is not
|
||
|
sorted by sequential order. So it let some dangling pointers in the
|
||
|
list which make processDirtyItemRecursive crash the next paint event.
|
||
|
|
||
|
Reviewed-by:bnilsen
|
||
|
Reviewed-by:andreas
|
||
|
(cherry picked from commit 705880f0045ac39140f980d69aec68869213e379)
|
||
|
---
|
||
|
src/gui/graphicsview/qgraphicsscene_p.h | 3 +-
|
||
|
tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp | 32 ++++++++++++++++++++++
|
||
|
2 files changed, 34 insertions(+), 1 deletions(-)
|
||
|
|
||
|
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
|
||
|
index b236c40..7d5316f 100644
|
||
|
--- a/src/gui/graphicsview/qgraphicsscene_p.h
|
||
|
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
|
||
|
@@ -78,7 +78,7 @@ class QGraphicsSceneIndex;
|
||
|
class QGraphicsView;
|
||
|
class QGraphicsWidget;
|
||
|
|
||
|
-class QGraphicsScenePrivate : public QObjectPrivate
|
||
|
+class Q_AUTOTEST_EXPORT QGraphicsScenePrivate : public QObjectPrivate
|
||
|
{
|
||
|
Q_DECLARE_PUBLIC(QGraphicsScene)
|
||
|
public:
|
||
|
@@ -266,6 +266,7 @@ public:
|
||
|
{
|
||
|
if (needSortTopLevelItems) {
|
||
|
qSort(topLevelItems.begin(), topLevelItems.end(), qt_notclosestLeaf);
|
||
|
+ topLevelSequentialOrdering = false;
|
||
|
needSortTopLevelItems = false;
|
||
|
}
|
||
|
}
|
||
|
|