summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2023-08-07 21:26:06 +0300
committerAhmad Samir <a.samirh78@gmail.com>2023-08-30 16:48:39 +0300
commitcfec14e1ff94b05bdfe15294199964247dbac518 (patch)
treec063e0605ebaeda6d568d4dbbddcf4748b706b9f
parent4ba7a76985cd52eaab2d0bf133e9ecb93b50e6cc (diff)
QMdiArea: port Q_FOREACH to ranged-for, d->pendingRearrangements
Take a copy of the member container as the loop may modify the container (either by moving/reordering the Rearranger elements or by appending). Pick-to: 6.6 6.5 Task-number: QTBUG-115803 Change-Id: Iaf891b29e9c7cdfdb3dc82e03ed94defb8d0cf4c Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
-rw-r--r--src/widgets/widgets/qmdiarea.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp
index 08ff93a7c3..ad8b55ca71 100644
--- a/src/widgets/widgets/qmdiarea.cpp
+++ b/src/widgets/widgets/qmdiarea.cpp
@@ -2329,7 +2329,9 @@ void QMdiArea::showEvent(QShowEvent *showEvent)
Q_D(QMdiArea);
if (!d->pendingRearrangements.isEmpty()) {
bool skipPlacement = false;
- foreach (Rearranger *rearranger, d->pendingRearrangements) {
+ // Take a copy because d->rearrange() may modify d->pendingRearrangements
+ const auto pendingRearrange = d->pendingRearrangements;
+ for (Rearranger *rearranger : pendingRearrange) {
// If this is the case, we don't have to lay out pending child windows
// since the rearranger will find a placement for them.
if (rearranger->type() != Rearranger::IconTiler && !skipPlacement)