diff options
author | Andreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com> | 2009-10-26 08:07:39 (GMT) |
---|---|---|
committer | Andreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com> | 2009-10-26 08:07:39 (GMT) |
commit | b14338cce8cb13003a4943d134502e085f36ab08 (patch) | |
tree | 73cfefc9ea2e5ee23982c0acb3514f7a777e6d77 /src/gui | |
parent | b2cc784cbba9c790c2cc083cf99d9a2a112a9c27 (diff) | |
download | Qt-b14338cce8cb13003a4943d134502e085f36ab08.zip Qt-b14338cce8cb13003a4943d134502e085f36ab08.tar.gz Qt-b14338cce8cb13003a4943d134502e085f36ab08.tar.bz2 |
Fix buglet in QGraphicsItem::stackBefore().
Reported by Alan. The stackBefore() implementation did not alter the
insertion order if the two items' current Z values were different. The
fix is to ensure it is updated, so that the stackBefore() operation
takes effect should the Z values become equal in the future. Example:
Current order: A-B-C-D
A->setZValue(1);
Current order: B-C-D-A (A moves to the end)
D->stackBefore(A);
Current order: B-C-D-A (unchanged, D is already before A)
A->setZValue(0);
Current order: D-A-B-C (now A moves back, and D moves in front)
Reviewed-by: Aaron Kennedy
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/graphicsview/qgraphicsitem.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 4b2ff52..ad672a3 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -4261,7 +4261,7 @@ void QGraphicsItem::stackBefore(const QGraphicsItem *sibling) // Only move items with the same Z value, and that need moving. int siblingIndex = sibling->d_ptr->siblingIndex; int myIndex = d_ptr->siblingIndex; - if (myIndex >= siblingIndex && d_ptr->z == sibling->d_ptr->z) { + if (myIndex >= siblingIndex) { siblings->move(myIndex, siblingIndex); // Fixup the insertion ordering. for (int i = 0; i < siblings->size(); ++i) { |