diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2015-11-30 12:19:31 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-12-23 09:14:03 +0000 |
commit | 4e628397b0ef6f8d5e9294e85507488cebe740f3 (patch) | |
tree | 47e39ade7cf381fd862e0d399811b997fd83b22e /src/widgets/graphicsview/qgraphicsview.cpp | |
parent | 29ddfc3be730ca48cbec0e3b4508b006ba79eb66 (diff) |
QGraphicsView: replace some Q_FOREACH loops over rvalues with C++11 range-for
This needs to be handled a bit carefully, because Qt containers
will detach upon being iterated over using range-for.
In the cases of this patch, that trivially cannot happen, because
all containers are marked as const when being assigned the rvalues
previously found on the rhs of the Q_FOREACH. The new code thus
does exactly what the old code did: take a const copy, then iterate
over it.
Separate patches will deal with other situations.
Range-for loops are much more efficient than foreach loops.
This patch shaves almost 4K of text size off an optimized Linux
AMD64 GCC 4.9 build.
Change-Id: Ida868b77d078cbfa0516d17e98e6f0a86fcdb7a3
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/widgets/graphicsview/qgraphicsview.cpp')
-rw-r--r-- | src/widgets/graphicsview/qgraphicsview.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp index ac8cd45f9e..928d826323 100644 --- a/src/widgets/graphicsview/qgraphicsview.cpp +++ b/src/widgets/graphicsview/qgraphicsview.cpp @@ -799,7 +799,8 @@ void QGraphicsViewPrivate::_q_setViewportCursor(const QCursor &cursor) void QGraphicsViewPrivate::_q_unsetViewportCursor() { Q_Q(QGraphicsView); - foreach (QGraphicsItem *item, q->items(lastMouseEvent.pos())) { + const auto items = q->items(lastMouseEvent.pos()); + for (QGraphicsItem *item : items) { if (item->hasCursor()) { _q_setViewportCursor(item->cursor()); return; @@ -1139,7 +1140,8 @@ QList<QGraphicsItem *> QGraphicsViewPrivate::findItems(const QRegion &exposedReg // the expose region, convert it to a path, and then search for items // using QGraphicsScene::items(QPainterPath); QRegion adjustedRegion; - foreach (const QRect &r, exposedRegion.rects()) + const auto rects = exposedRegion.rects(); + for (const QRect &r : rects) adjustedRegion += r.adjusted(-1, -1, 1, 1); const QPainterPath exposedScenePath(q->mapToScene(qt_regionToPath(adjustedRegion))); @@ -2791,7 +2793,8 @@ void QGraphicsView::setupViewport(QWidget *widget) #ifndef QT_NO_GESTURES if (d->scene) { - foreach (Qt::GestureType gesture, d->scene->d_func()->grabbedGestures.keys()) + const auto gestures = d->scene->d_func()->grabbedGestures.keys(); + for (Qt::GestureType gesture : gestures) widget->grabGesture(gesture); } #endif |