summaryrefslogtreecommitdiffstats
path: root/src/widgets/graphicsview
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/graphicsview')
-rw-r--r--src/widgets/graphicsview/qgraph_p.h5
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp53
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp110
-rw-r--r--src/widgets/graphicsview/qgraphicsitem_p.h75
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp28
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget_p.h14
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp159
-rw-r--r--src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp29
-rw-r--r--src/widgets/graphicsview/qgraphicsview.cpp15
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.cpp7
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.h3
-rw-r--r--src/widgets/graphicsview/qgraphicswidget_p.cpp19
-rw-r--r--src/widgets/graphicsview/qgraphicswidget_p.h18
-rw-r--r--src/widgets/graphicsview/qsimplex_p.cpp8
15 files changed, 300 insertions, 245 deletions
diff --git a/src/widgets/graphicsview/qgraph_p.h b/src/widgets/graphicsview/qgraph_p.h
index c63c2c6f8e..2c9c58eb4c 100644
--- a/src/widgets/graphicsview/qgraph_p.h
+++ b/src/widgets/graphicsview/qgraph_p.h
@@ -222,9 +222,8 @@ public:
QSet<Vertex *> setOfVertices = vertices();
for (typename QSet<Vertex*>::const_iterator it = setOfVertices.begin(); it != setOfVertices.end(); ++it) {
Vertex *v = *it;
- QList<Vertex*> adjacents = adjacentVertices(v);
- for (int i = 0; i < adjacents.count(); ++i) {
- Vertex *v1 = adjacents.at(i);
+ const QList<Vertex*> adjacents = adjacentVertices(v);
+ for (auto *v1 : adjacents) {
EdgeData *data = edgeData(v, v1);
bool forward = data->from == v;
if (forward) {
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
index dac8e61645..e8501474a5 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
@@ -31,6 +31,8 @@
**
****************************************************************************/
+#include "qgraphicsanchorlayout_p.h"
+
#include <QtWidgets/qwidget.h>
#include <QtWidgets/qapplication.h>
#include <QtCore/qlinkedlist.h>
@@ -40,7 +42,7 @@
#include <QtCore/qfile.h>
#endif
-#include "qgraphicsanchorlayout_p.h"
+#include <numeric>
#ifndef QT_NO_GRAPHICSVIEW
QT_BEGIN_NAMESPACE
@@ -602,10 +604,10 @@ QSimplexConstraint *GraphPath::constraint(const GraphPath &path) const
QString GraphPath::toString() const
{
QString string(QLatin1String("Path: "));
- foreach(AnchorData *edge, positives)
+ for (AnchorData *edge : positives)
string += QString::fromLatin1(" (+++) %1").arg(edge->toString());
- foreach(AnchorData *edge, negatives)
+ for (AnchorData *edge : negatives)
string += QString::fromLatin1(" (---) %1").arg(edge->toString());
return string;
@@ -1932,8 +1934,7 @@ void QGraphicsAnchorLayoutPrivate::removeVertex(QGraphicsLayoutItem *item, Qt::A
if (AnchorVertex *v = internalVertex(item, edge)) {
Graph<AnchorVertex, AnchorData> &g = graph[edgeOrientation(edge)];
const QList<AnchorVertex *> allVertices = graph[edgeOrientation(edge)].adjacentVertices(v);
- AnchorVertex *v2;
- foreach (v2, allVertices) {
+ for (auto *v2 : allVertices) {
g.removeEdge(v, v2);
removeInternalVertex(item, edge);
removeInternalVertex(v2->m_item, v2->m_edge);
@@ -2057,9 +2058,8 @@ QList<AnchorData *> getVariables(const QList<QSimplexConstraint *> &constraints)
QSet<AnchorData *> variableSet;
for (int i = 0; i < constraints.count(); ++i) {
const QSimplexConstraint *c = constraints.at(i);
- foreach (QSimplexVariable *var, c->variables.keys()) {
- variableSet += static_cast<AnchorData *>(var);
- }
+ for (auto it = c->variables.cbegin(), end = c->variables.cend(); it != end; ++it)
+ variableSet.insert(static_cast<AnchorData *>(it.key()));
}
return variableSet.toList();
}
@@ -2180,10 +2180,7 @@ static void shiftConstraints(const QList<QSimplexConstraint *> &constraints, qre
{
for (int i = 0; i < constraints.count(); ++i) {
QSimplexConstraint *c = constraints.at(i);
- qreal multiplier = 0;
- foreach (qreal v, c->variables) {
- multiplier += v;
- }
+ const qreal multiplier = std::accumulate(c->variables.cbegin(), c->variables.cend(), qreal(0));
c->constant += multiplier * amount;
}
}
@@ -2223,12 +2220,10 @@ bool QGraphicsAnchorLayoutPrivate::calculateTrunk(Orientation orientation, const
// Calculate and set the preferred size for the layout,
// from the edge sizes that were calculated above.
qreal pref(0.0);
- foreach (const AnchorData *ad, path.positives) {
+ for (const AnchorData *ad : path.positives)
pref += ad->sizeAtPreferred;
- }
- foreach (const AnchorData *ad, path.negatives) {
+ for (const AnchorData *ad : path.negatives)
pref -= ad->sizeAtPreferred;
- }
sizeHints[orientation][Qt::MinimumSize] = min;
sizeHints[orientation][Qt::PreferredSize] = pref;
@@ -2323,9 +2318,9 @@ void QGraphicsAnchorLayoutPrivate::findPaths(Orientation orientation)
graphPaths[orientation].insert(root, GraphPath());
- foreach (AnchorVertex *v, graph[orientation].adjacentVertices(root)) {
+ const auto adjacentVertices = graph[orientation].adjacentVertices(root);
+ for (AnchorVertex *v : adjacentVertices)
queue.enqueue(qMakePair(root, v));
- }
while(!queue.isEmpty()) {
QPair<AnchorVertex *, AnchorVertex *> pair = queue.dequeue();
@@ -2344,10 +2339,9 @@ void QGraphicsAnchorLayoutPrivate::findPaths(Orientation orientation)
graphPaths[orientation].insert(pair.second, current);
- foreach (AnchorVertex *v,
- graph[orientation].adjacentVertices(pair.second)) {
+ const auto adjacentVertices = graph[orientation].adjacentVertices(pair.second);
+ for (AnchorVertex *v : adjacentVertices)
queue.enqueue(qMakePair(pair.second, v));
- }
}
// We will walk through every reachable items (non-float) store them in a temporary set.
@@ -2368,8 +2362,8 @@ void QGraphicsAnchorLayoutPrivate::findPaths(Orientation orientation)
*/
void QGraphicsAnchorLayoutPrivate::constraintsFromPaths(Orientation orientation)
{
- foreach (AnchorVertex *vertex, graphPaths[orientation].uniqueKeys())
- {
+ const auto vertices = graphPaths[orientation].uniqueKeys();
+ for (AnchorVertex *vertex : vertices) {
int valueCount = graphPaths[orientation].count(vertex);
if (valueCount == 1)
continue;
@@ -2550,7 +2544,8 @@ QGraphicsAnchorLayoutPrivate::getGraphParts(Orientation orientation)
// remaining constraints.
if (match) {
trunkConstraints += c;
- trunkVariables += QSet<QSimplexVariable *>::fromList(c->variables.keys());
+ for (auto jt = c->variables.cbegin(), end = c->variables.cend(); jt != end; ++jt)
+ trunkVariables.insert(jt.key());
it = remainingConstraints.erase(it);
dirty = true;
} else {
@@ -2593,7 +2588,7 @@ void QGraphicsAnchorLayoutPrivate::identifyFloatItems(const QSet<AnchorData *> &
{
QSet<QGraphicsLayoutItem *> nonFloating;
- foreach (const AnchorData *ad, visited)
+ for (const AnchorData *ad : visited)
identifyNonFloatItems_helper(ad, &nonFloating);
QSet<QGraphicsLayoutItem *> allItems;
@@ -2707,9 +2702,9 @@ void QGraphicsAnchorLayoutPrivate::calculateVertexPositions(
visited.insert(root);
// Add initial edges to the queue
- foreach (AnchorVertex *v, graph[orientation].adjacentVertices(root)) {
+ const auto adjacentVertices = graph[orientation].adjacentVertices(root);
+ for (AnchorVertex *v : adjacentVertices)
queue.enqueue(qMakePair(root, v));
- }
// Do initial calculation required by "interpolateEdge()"
setupEdgesInterpolation(orientation);
@@ -2796,7 +2791,7 @@ void QGraphicsAnchorLayoutPrivate::interpolateEdge(AnchorVertex *base, AnchorDat
}
bool QGraphicsAnchorLayoutPrivate::solveMinMax(const QList<QSimplexConstraint *> &constraints,
- GraphPath path, qreal *min, qreal *max)
+ const GraphPath &path, qreal *min, qreal *max)
{
QSimplex simplex;
bool feasible = simplex.setConstraints(constraints);
@@ -2983,7 +2978,7 @@ void QGraphicsAnchorLayoutPrivate::dumpGraph(const QString &name)
{
QFile file(QString::fromLatin1("anchorlayout.%1.dot").arg(name));
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
- qWarning("Could not write to %s", file.fileName().toLocal8Bit().constData());
+ qWarning("Could not write to %ls", qUtf16Printable(file.fileName()));
QString str = QString::fromLatin1("digraph anchorlayout {\nnode [shape=\"rect\"]\n%1}");
QString dotContents = graph[0].serializeToDot();
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.h b/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
index a5c7f1e2ce..15fd0d0b79 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
@@ -522,7 +522,7 @@ public:
// Linear Programming solver methods
bool solveMinMax(const QList<QSimplexConstraint *> &constraints,
- GraphPath path, qreal *min, qreal *max);
+ const GraphPath &path, qreal *min, qreal *max);
bool solvePreferred(const QList<QSimplexConstraint *> &constraints,
const QList<AnchorData *> &variables);
bool hasConflicts() const;
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index 5f5c402a4a..31b2778251 100644
--- a/src/widgets/graphicsview/qgraphicsitem.cpp
+++ b/src/widgets/graphicsview/qgraphicsitem.cpp
@@ -812,6 +812,85 @@ static QPainterPath qt_graphicsItem_shapeFromPath(const QPainterPath &path, cons
/*!
\internal
+*/
+QGraphicsItemPrivate::QGraphicsItemPrivate()
+ : z(0),
+ opacity(1.),
+ scene(nullptr),
+ parent(nullptr),
+ transformData(nullptr),
+ graphicsEffect(nullptr),
+ index(-1),
+ siblingIndex(-1),
+ itemDepth(-1),
+ focusProxy(nullptr),
+ subFocusItem(nullptr),
+ focusScopeItem(nullptr),
+ imHints(Qt::ImhNone),
+ panelModality(QGraphicsItem::NonModal),
+ acceptedMouseButtons(0x1f),
+ visible(true),
+ explicitlyHidden(false),
+ enabled(true),
+ explicitlyDisabled(false),
+ selected(false),
+ acceptsHover(false),
+ acceptDrops(false),
+ isMemberOfGroup(false),
+ handlesChildEvents(false),
+ itemDiscovered(false),
+ hasCursor(false),
+ ancestorFlags(0),
+ cacheMode(0),
+ hasBoundingRegionGranularity(false),
+ isWidget(false),
+ dirty(false),
+ dirtyChildren(false),
+ localCollisionHack(false),
+ inSetPosHelper(false),
+ needSortChildren(false),
+ allChildrenDirty(false),
+ fullUpdatePending(false),
+ flags(0),
+ paintedViewBoundingRectsNeedRepaint(false),
+ dirtySceneTransform(true),
+ geometryChanged(true),
+ inDestructor(false),
+ isObject(false),
+ ignoreVisible(false),
+ ignoreOpacity(false),
+ acceptTouchEvents(false),
+ acceptedTouchBeginEvent(false),
+ filtersDescendantEvents(false),
+ sceneTransformTranslateOnly(false),
+ notifyBoundingRectChanged(false),
+ notifyInvalidated(false),
+ mouseSetsFocus(true),
+ explicitActivate(false),
+ wantsActive(false),
+ holesInSiblingIndex(false),
+ sequentialOrdering(true),
+ updateDueToGraphicsEffect(false),
+ scenePosDescendants(false),
+ pendingPolish(false),
+ mayHaveChildWithGraphicsEffect(false),
+ isDeclarativeItem(false),
+ sendParentChangeNotification(false),
+ dirtyChildrenBoundingRect(true),
+ globalStackingOrder(-1),
+ q_ptr(nullptr)
+{
+}
+
+/*!
+ \internal
+*/
+QGraphicsItemPrivate::~QGraphicsItemPrivate()
+{
+}
+
+/*!
+ \internal
Propagates the ancestor flag \a flag with value \a enabled to all this
item's children. If \a root is false, the flag is also set on this item
@@ -1373,12 +1452,9 @@ void QGraphicsItemCache::purge()
{
QPixmapCache::remove(key);
key = QPixmapCache::Key();
- QMutableHashIterator<QPaintDevice *, DeviceData> it(deviceData);
- while (it.hasNext()) {
- DeviceData &data = it.next().value();
+ const auto &constDeviceData = deviceData; // avoid detach
+ for (const auto &data : constDeviceData)
QPixmapCache::remove(data.key);
- data.cacheIndent = QPoint();
- }
deviceData.clear();
allExposed = true;
exposed.clear();
@@ -1443,7 +1519,8 @@ QGraphicsItem::~QGraphicsItem()
if (d_ptr->isObject && !d_ptr->gestureContext.isEmpty()) {
QGraphicsObject *o = static_cast<QGraphicsObject *>(this);
if (QGestureManager *manager = QGestureManager::instance()) {
- foreach (Qt::GestureType type, d_ptr->gestureContext.keys())
+ const auto types = d_ptr->gestureContext.keys(); // FIXME: iterate over the map directly?
+ for (Qt::GestureType type : types)
manager->cleanupCachedGestures(o, type);
}
}
@@ -2167,11 +2244,13 @@ void QGraphicsItem::setCursor(const QCursor &cursor)
d_ptr->hasCursor = 1;
if (d_ptr->scene) {
d_ptr->scene->d_func()->allItemsUseDefaultCursor = false;
- foreach (QGraphicsView *view, d_ptr->scene->views()) {
+ const auto views = d_ptr->scene->views();
+ for (QGraphicsView *view : views) {
view->viewport()->setMouseTracking(true);
// Note: Some of this logic is duplicated in QGraphicsView's mouse events.
if (view->underMouse()) {
- foreach (QGraphicsItem *itemUnderCursor, view->items(view->mapFromGlobal(QCursor::pos()))) {
+ const auto itemsUnderCursor = view->items(view->mapFromGlobal(QCursor::pos()));
+ for (QGraphicsItem *itemUnderCursor : itemsUnderCursor) {
if (itemUnderCursor->hasCursor()) {
QMetaObject::invokeMethod(view, "_q_setViewportCursor",
Q_ARG(QCursor, itemUnderCursor->cursor()));
@@ -2210,7 +2289,8 @@ void QGraphicsItem::unsetCursor()
d_ptr->unsetExtra(QGraphicsItemPrivate::ExtraCursor);
d_ptr->hasCursor = 0;
if (d_ptr->scene) {
- foreach (QGraphicsView *view, d_ptr->scene->views()) {
+ const auto views = d_ptr->scene->views();
+ for (QGraphicsView *view : views) {
if (view->underMouse() && view->itemAt(view->mapFromGlobal(QCursor::pos())) == this) {
QMetaObject::invokeMethod(view, "_q_unsetViewportCursor");
break;
@@ -2846,7 +2926,8 @@ QRectF QGraphicsItemPrivate::effectiveBoundingRect(const QRectF &rect) const
return effect->boundingRectFor(rect);
QRectF sceneRect = q->mapRectToScene(rect);
QRectF sceneEffectRect;
- foreach (QGraphicsView *view, scene->views()) {
+ const auto views = scene->views();
+ for (QGraphicsView *view : views) {
QRectF deviceRect = view->d_func()->mapRectFromScene(sceneRect);
QRect deviceEffectRect = effect->boundingRectFor(deviceRect).toAlignedRect();
sceneEffectRect |= view->d_func()->mapRectToScene(deviceEffectRect);
@@ -5140,7 +5221,8 @@ bool QGraphicsItem::isObscured(const QRectF &rect) const
QRectF br = boundingRect();
QRectF testRect = rect.isNull() ? br : rect;
- foreach (QGraphicsItem *item, d->scene->items(mapToScene(br), Qt::IntersectsItemBoundingRect)) {
+ const auto items = d->scene->items(mapToScene(br), Qt::IntersectsItemBoundingRect);
+ for (QGraphicsItem *item : items) {
if (item == this)
break;
if (qt_QGraphicsItem_isObscured(this, item, testRect))
@@ -5262,7 +5344,8 @@ QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) c
QTransform unscale = QTransform::fromScale(1 / granularity, 1 / granularity);
QRegion r;
QBitmap colorMask = QBitmap::fromImage(mask.createMaskFromColor(0));
- foreach (const QRect &rect, QRegion( colorMask ).rects()) {
+ const auto rects = QRegion(colorMask).rects();
+ for (const QRect &rect : rects) {
QRect xrect = unscale.mapRect(rect).translated(deviceRect.topLeft() - QPoint(pad, pad));
r += xrect.adjusted(-1, -1, 1, 1) & deviceRect;
}
@@ -6523,7 +6606,8 @@ bool QGraphicsItem::isUnderMouse() const
return false;
QPoint cursorPos = QCursor::pos();
- foreach (QGraphicsView *view, d->scene->views()) {
+ const auto views = d->scene->views();
+ for (QGraphicsView *view : views) {
if (contains(mapFromScene(view->mapToScene(view->mapFromGlobal(cursorPos)))))
return true;
}
diff --git a/src/widgets/graphicsview/qgraphicsitem_p.h b/src/widgets/graphicsview/qgraphicsitem_p.h
index fe4bac12bc..a8d4e950b5 100644
--- a/src/widgets/graphicsview/qgraphicsitem_p.h
+++ b/src/widgets/graphicsview/qgraphicsitem_p.h
@@ -168,77 +168,8 @@ public:
AncestorContainsChildren = 0x10
};
- inline QGraphicsItemPrivate()
- : z(0),
- opacity(1.),
- scene(0),
- parent(0),
- transformData(0),
- graphicsEffect(0),
- index(-1),
- siblingIndex(-1),
- itemDepth(-1),
- focusProxy(0),
- subFocusItem(0),
- focusScopeItem(0),
- imHints(Qt::ImhNone),
- panelModality(QGraphicsItem::NonModal),
- acceptedMouseButtons(0x1f),
- visible(1),
- explicitlyHidden(0),
- enabled(1),
- explicitlyDisabled(0),
- selected(0),
- acceptsHover(0),
- acceptDrops(0),
- isMemberOfGroup(0),
- handlesChildEvents(0),
- itemDiscovered(0),
- hasCursor(0),
- ancestorFlags(0),
- cacheMode(0),
- hasBoundingRegionGranularity(0),
- isWidget(0),
- dirty(0),
- dirtyChildren(0),
- localCollisionHack(0),
- inSetPosHelper(0),
- needSortChildren(0),
- allChildrenDirty(0),
- fullUpdatePending(0),
- flags(0),
- paintedViewBoundingRectsNeedRepaint(0),
- dirtySceneTransform(1),
- geometryChanged(1),
- inDestructor(0),
- isObject(0),
- ignoreVisible(0),
- ignoreOpacity(0),
- acceptTouchEvents(0),
- acceptedTouchBeginEvent(0),
- filtersDescendantEvents(0),
- sceneTransformTranslateOnly(0),
- notifyBoundingRectChanged(0),
- notifyInvalidated(0),
- mouseSetsFocus(1),
- explicitActivate(0),
- wantsActive(0),
- holesInSiblingIndex(0),
- sequentialOrdering(1),
- updateDueToGraphicsEffect(0),
- scenePosDescendants(0),
- pendingPolish(0),
- mayHaveChildWithGraphicsEffect(0),
- isDeclarativeItem(0),
- sendParentChangeNotification(0),
- dirtyChildrenBoundingRect(1),
- globalStackingOrder(-1),
- q_ptr(0)
- {
- }
-
- inline virtual ~QGraphicsItemPrivate()
- { }
+ QGraphicsItemPrivate();
+ virtual ~QGraphicsItemPrivate();
static const QGraphicsItemPrivate *get(const QGraphicsItem *item)
{
@@ -354,7 +285,7 @@ public:
struct ExtraStruct {
ExtraStruct() {} // for QVector, don't use
- ExtraStruct(Extra type, QVariant value)
+ ExtraStruct(Extra type, const QVariant &value)
: type(type), value(value)
{ }
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
index 88bed7cf0e..ea9fc0a0d5 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
@@ -187,6 +187,31 @@ Q_WIDGETS_EXPORT extern bool qt_tab_all_widgets();
/*!
\internal
*/
+QGraphicsProxyWidgetPrivate::QGraphicsProxyWidgetPrivate()
+ : QGraphicsWidgetPrivate(),
+ dragDropWidget(nullptr),
+ posChangeMode(NoMode),
+ sizeChangeMode(NoMode),
+ visibleChangeMode(NoMode),
+ enabledChangeMode(NoMode),
+ styleChangeMode(NoMode),
+ paletteChangeMode(NoMode),
+ tooltipChangeMode(NoMode),
+ focusFromWidgetToProxy(false),
+ proxyIsGivingFocus(false)
+{
+}
+
+/*!
+ \internal
+*/
+QGraphicsProxyWidgetPrivate::~QGraphicsProxyWidgetPrivate()
+{
+}
+
+/*!
+ \internal
+*/
void QGraphicsProxyWidgetPrivate::init()
{
Q_Q(QGraphicsProxyWidget);
@@ -570,7 +595,8 @@ void QGraphicsProxyWidgetPrivate::setWidget_helper(QWidget *newWidget, bool auto
resolvePalette(inheritedPaletteResolveMask);
widget->update();
- foreach (QGraphicsItem *child, q->childItems()) {
+ const auto childItems = q->childItems();
+ for (QGraphicsItem *child : childItems) {
if (child->d_ptr->isProxyWidget()) {
QGraphicsProxyWidget *childProxy = static_cast<QGraphicsProxyWidget *>(child);
QWidget * parent = childProxy->widget();
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget_p.h b/src/widgets/graphicsview/qgraphicsproxywidget_p.h
index c0e0d73aa9..a3386c78cb 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget_p.h
+++ b/src/widgets/graphicsview/qgraphicsproxywidget_p.h
@@ -56,17 +56,9 @@ class Q_AUTOTEST_EXPORT QGraphicsProxyWidgetPrivate : public QGraphicsWidgetPriv
{
Q_DECLARE_PUBLIC(QGraphicsProxyWidget)
public:
- QGraphicsProxyWidgetPrivate()
- : dragDropWidget(0),
- posChangeMode(NoMode),
- sizeChangeMode(NoMode),
- visibleChangeMode(NoMode),
- enabledChangeMode(NoMode),
- styleChangeMode(NoMode),
- paletteChangeMode(NoMode),
- tooltipChangeMode(NoMode),
- focusFromWidgetToProxy(0)
- { }
+ QGraphicsProxyWidgetPrivate();
+ ~QGraphicsProxyWidgetPrivate();
+
void init();
void sendWidgetMouseEvent(QGraphicsSceneMouseEvent *event);
void sendWidgetMouseEvent(QGraphicsSceneHoverEvent *event);
diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp
index ad58aeb488..80c0aa1a30 100644
--- a/src/widgets/graphicsview/qgraphicsscene.cpp
+++ b/src/widgets/graphicsview/qgraphicsscene.cpp
@@ -232,6 +232,7 @@
#include <QtGui/qpainter.h>
#include <QtGui/qpixmapcache.h>
#include <QtGui/qpolygon.h>
+#include <QtGui/qtouchdevice.h>
#include <QtWidgets/qstyleoption.h>
#include <QtWidgets/qtooltip.h>
#include <QtGui/qtransform.h>
@@ -755,8 +756,9 @@ void QGraphicsScenePrivate::setActivePanelHelper(QGraphicsItem *item, bool durin
q->sendEvent(activePanel, &event);
} else if (panel && !duringActivationEvent) {
// Deactivate the scene if changing activation to a panel.
+ const auto items = q->items();
QEvent event(QEvent::WindowDeactivate);
- foreach (QGraphicsItem *item, q->items()) {
+ for (QGraphicsItem *item : items) {
if (item->isVisible() && !item->isPanel() && !item->parentItem())
q->sendEvent(item, &event);
}
@@ -790,9 +792,10 @@ void QGraphicsScenePrivate::setActivePanelHelper(QGraphicsItem *item, bool durin
} while (fw != panel);
}
} else if (q->isActive()) {
+ const auto items = q->items();
// Activate the scene
QEvent event(QEvent::WindowActivate);
- foreach (QGraphicsItem *item, q->items()) {
+ for (QGraphicsItem *item : items) {
if (item->isVisible() && !item->isPanel() && !item->parentItem())
q->sendEvent(item, &event);
}
@@ -1544,7 +1547,8 @@ void QGraphicsScenePrivate::updateFont(const QFont &font)
// Resolve the fonts of all top-level widget items, or widget items
// whose parent is not a widget.
- foreach (QGraphicsItem *item, q->items()) {
+ const auto items = q->items();
+ for (QGraphicsItem *item : items) {
if (!item->parentItem()) {
// Resolvefont for an item is a noop operation, but
// every item can be a widget, or can have a widget
@@ -1600,7 +1604,8 @@ void QGraphicsScenePrivate::updatePalette(const QPalette &palette)
// Resolve the palettes of all top-level widget items, or widget items
// whose parent is not a widget.
- foreach (QGraphicsItem *item, q->items()) {
+ const auto items = q->items();
+ for (QGraphicsItem *item : items) {
if (!item->parentItem()) {
// ResolvePalette for an item is a noop operation, but
// every item can be a widget, or can have a widget
@@ -1946,7 +1951,8 @@ QRectF QGraphicsScene::itemsBoundingRect() const
{
// Does not take untransformable items into account.
QRectF boundingRect;
- foreach (QGraphicsItem *item, items())
+ const auto items_ = items();
+ for (QGraphicsItem *item : items_)
boundingRect |= item->sceneBoundingRect();
return boundingRect;
}
@@ -2115,7 +2121,8 @@ QList<QGraphicsItem *> QGraphicsScene::collidingItems(const QGraphicsItem *item,
// Does not support ItemIgnoresTransformations.
QList<QGraphicsItem *> tmp;
- foreach (QGraphicsItem *itemInVicinity, d->index->estimateItems(item->sceneBoundingRect(), Qt::DescendingOrder)) {
+ const auto itemsInVicinity = d->index->estimateItems(item->sceneBoundingRect(), Qt::DescendingOrder);
+ for (QGraphicsItem *itemInVicinity : itemsInVicinity) {
if (item != itemInVicinity && item->collidesWithItem(itemInVicinity, mode))
tmp << itemInVicinity;
}
@@ -2302,7 +2309,8 @@ void QGraphicsScene::setSelectionArea(const QPainterPath &path,
bool changed = false;
// Set all items in path to selected.
- foreach (QGraphicsItem *item, items(path, mode, Qt::DescendingOrder, deviceTransform)) {
+ const auto items = this->items(path, mode, Qt::DescendingOrder, deviceTransform);
+ for (QGraphicsItem *item : items) {
if (item->flags() & QGraphicsItem::ItemIsSelectable) {
if (!item->isSelected())
changed = true;
@@ -2429,7 +2437,7 @@ QGraphicsItemGroup *QGraphicsScene::createItemGroup(const QList<QGraphicsItem *>
QGraphicsItemGroup *group = new QGraphicsItemGroup(commonAncestor);
if (!commonAncestor)
addItem(group);
- foreach (QGraphicsItem *item, items)
+ for (QGraphicsItem *item : items)
group->addToGroup(item);
return group;
}
@@ -2443,7 +2451,8 @@ QGraphicsItemGroup *QGraphicsScene::createItemGroup(const QList<QGraphicsItem *>
*/
void QGraphicsScene::destroyItemGroup(QGraphicsItemGroup *group)
{
- foreach (QGraphicsItem *item, group->childItems())
+ const auto items = group->childItems();
+ for (QGraphicsItem *item : items)
group->removeFromGroup(item);
removeItem(group);
delete group;
@@ -2558,7 +2567,8 @@ void QGraphicsScene::addItem(QGraphicsItem *item)
}
#ifndef QT_NO_GESTURES
- foreach (Qt::GestureType gesture, item->d_ptr->gestureContext.keys())
+ const auto gestures = item->d_ptr->gestureContext.keys(); // FIXME: iterate over hash directly?
+ for (Qt::GestureType gesture : gestures)
d->grabGesture(item, gesture);
#endif
@@ -3129,7 +3139,8 @@ void QGraphicsScene::setForegroundBrush(const QBrush &brush)
{
Q_D(QGraphicsScene);
d->foregroundBrush = brush;
- foreach (QGraphicsView *view, views())
+ const auto views_ = views();
+ for (QGraphicsView *view : views_)
view->viewport()->update();
update();
}
@@ -3237,7 +3248,8 @@ void QGraphicsScene::update(const QRectF &rect)
*/
void QGraphicsScene::invalidate(const QRectF &rect, SceneLayers layers)
{
- foreach (QGraphicsView *view, views())
+ const auto views_ = views();
+ for (QGraphicsView *view : views_)
view->invalidateScene(rect, layers);
update(rect);
}
@@ -3278,7 +3290,8 @@ QList <QGraphicsView *> QGraphicsScene::views() const
void QGraphicsScene::advance()
{
for (int i = 0; i < 2; ++i) {
- foreach (QGraphicsItem *item, items())
+ const auto items_ = items();
+ for (QGraphicsItem *item : items_)
item->advance(i);
}
}
@@ -3433,7 +3446,8 @@ bool QGraphicsScene::event(QEvent *event)
} else {
// Activate all toplevel items.
QEvent event(QEvent::WindowActivate);
- foreach (QGraphicsItem *item, items()) {
+ const auto items_ = items();
+ for (QGraphicsItem *item : items_) {
if (item->isVisible() && !item->isPanel() && !item->parentItem())
sendEvent(item, &event);
}
@@ -3451,7 +3465,8 @@ bool QGraphicsScene::event(QEvent *event)
} else {
// Activate all toplevel items.
QEvent event(QEvent::WindowDeactivate);
- foreach (QGraphicsItem *item, items()) {
+ const auto items_ = items();
+ for (QGraphicsItem *item : items_) {
if (item->isVisible() && !item->isPanel() && !item->parentItem())
sendEvent(item, &event);
}
@@ -3546,9 +3561,10 @@ void QGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMen
// Send the event to all items at this position until one item accepts the
// event.
- foreach (QGraphicsItem *item, d->itemsAtPosition(contextMenuEvent->screenPos(),
- contextMenuEvent->scenePos(),
- contextMenuEvent->widget())) {
+ const auto items = d->itemsAtPosition(contextMenuEvent->screenPos(),
+ contextMenuEvent->scenePos(),
+ contextMenuEvent->widget());
+ for (QGraphicsItem *item : items) {
contextMenuEvent->setPos(item->d_ptr->genericMapFromScene(contextMenuEvent->scenePos(),
contextMenuEvent->widget()));
contextMenuEvent->accept();
@@ -3604,9 +3620,10 @@ void QGraphicsScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
// Find the topmost enabled items under the cursor. They are all
// candidates for accepting drag & drop events.
- foreach (QGraphicsItem *item, d->itemsAtPosition(event->screenPos(),
- event->scenePos(),
- event->widget())) {
+ const auto items = d->itemsAtPosition(event->screenPos(),
+ event->scenePos(),
+ event->widget());
+ for (QGraphicsItem *item : items) {
if (!item->isEnabled() || !item->acceptDrops())
continue;
@@ -3869,15 +3886,15 @@ bool QGraphicsScenePrivate::dispatchHoverEvent(QGraphicsSceneHoverEvent *hoverEv
QList<QGraphicsItem *> parents;
QGraphicsItem *parent = item;
while (parent && parent != commonAncestorItem) {
- parents.prepend(parent);
+ parents.append(parent);
if (parent->isPanel()) {
// Stop at the panel - we don't deliver beyond this point.
break;
}
parent = parent->parentItem();
}
- for (int i = 0; i < parents.size(); ++i) {
- parent = parents.at(i);
+ for (auto it = parents.crbegin(), end = parents.crend(); it != end; ++it) {
+ QGraphicsItem *parent = *it;
hoverItems << parent;
if (itemAcceptsHoverEvents_helper(parent))
sendHoverEvent(QEvent::GraphicsSceneHoverEnter, parent, hoverEvent);
@@ -4132,9 +4149,9 @@ void QGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent)
void QGraphicsScene::wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)
{
Q_D(QGraphicsScene);
- QList<QGraphicsItem *> wheelCandidates = d->itemsAtPosition(wheelEvent->screenPos(),
- wheelEvent->scenePos(),
- wheelEvent->widget());
+ const QList<QGraphicsItem *> wheelCandidates = d->itemsAtPosition(wheelEvent->screenPos(),
+ wheelEvent->scenePos(),
+ wheelEvent->widget());
#ifdef Q_DEAD_CODE_FROM_QT4_MAC
// On Mac, ignore the event if the first item under the mouse is not the last opened
@@ -4156,7 +4173,7 @@ void QGraphicsScene::wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)
#endif
bool hasSetFocus = false;
- foreach (QGraphicsItem *item, wheelCandidates) {
+ for (QGraphicsItem *item : wheelCandidates) {
if (!hasSetFocus && item->isEnabled()
&& ((item->flags() & QGraphicsItem::ItemIsFocusable) && item->d_ptr->mouseSetsFocus)) {
if (item->isWidget() && static_cast<QGraphicsWidget *>(item)->focusPolicy() == Qt::WheelFocus) {
@@ -4634,7 +4651,8 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte
for (int i = 0; i < exposed.size(); ++i)
br |= exposed.at(i);
QTransform pixmapToItem = itemToPixmap.inverted();
- foreach (const QRect &r, scrollExposure.rects())
+ const auto rects = scrollExposure.rects();
+ for (const QRect &r : rects)
br |= pixmapToItem.mapRect(r);
}
styleOptionTmp = *option;
@@ -5563,7 +5581,8 @@ void QGraphicsScene::setStyle(QStyle *style)
QApplication::sendEvent(this, &event);
// Notify all widgets that don't have a style explicitly set.
- foreach (QGraphicsItem *item, items()) {
+ const auto items_ = items();
+ for (QGraphicsItem *item : items_) {
if (item->isWidget()) {
QGraphicsWidget *widget = static_cast<QGraphicsWidget *>(item);
if (!widget->testAttribute(Qt::WA_SetStyle))
@@ -5727,18 +5746,16 @@ void QGraphicsScene::setActiveWindow(QGraphicsWidget *widget)
// Raise
if (panel) {
- QList<QGraphicsItem *> siblingWindows;
QGraphicsItem *parent = panel->parentItem();
// Raise ### inefficient for toplevels
- foreach (QGraphicsItem *sibling, parent ? parent->childItems() : items()) {
- if (sibling != panel && sibling->isWindow())
- siblingWindows << sibling;
- }
// Find the highest z value.
qreal z = panel->zValue();
- for (int i = 0; i < siblingWindows.size(); ++i)
- z = qMax(z, siblingWindows.at(i)->zValue());
+ const auto siblings = parent ? parent->childItems() : items();
+ for (QGraphicsItem *sibling : siblings) {
+ if (sibling != panel && sibling->isWindow())
+ z = qMax(z, sibling->zValue());
+ }
// This will probably never overflow.
const qreal litt = qreal(0.001);
@@ -5821,7 +5838,8 @@ void QGraphicsScenePrivate::addView(QGraphicsView *view)
{
views << view;
#ifndef QT_NO_GESTURES
- foreach (Qt::GestureType gesture, grabbedGestures.keys())
+ const auto gestures = grabbedGestures.keys();
+ for (Qt::GestureType gesture : gestures)
view->viewport()->grabGesture(gesture);
#endif
}
@@ -5833,14 +5851,11 @@ void QGraphicsScenePrivate::removeView(QGraphicsView *view)
void QGraphicsScenePrivate::updateTouchPointsForItem(QGraphicsItem *item, QTouchEvent *touchEvent)
{
- QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
- for (int i = 0; i < touchPoints.count(); ++i) {
- QTouchEvent::TouchPoint &touchPoint = touchPoints[i];
+ for (auto &touchPoint : touchEvent->_touchPoints) {
touchPoint.setRect(item->mapFromScene(touchPoint.sceneRect()).boundingRect());
touchPoint.setStartPos(item->d_ptr->genericMapFromScene(touchPoint.startScenePos(), static_cast<QWidget *>(touchEvent->target())));
touchPoint.setLastPos(item->d_ptr->genericMapFromScene(touchPoint.lastScenePos(), static_cast<QWidget *>(touchEvent->target())));
}
- touchEvent->setTouchPoints(touchPoints);
}
int QGraphicsScenePrivate::findClosestTouchPointId(const QPointF &scenePos)
@@ -6166,7 +6181,7 @@ void QGraphicsScenePrivate::gestureTargetsAtHotSpots(const QSet<QGesture *> &ges
QSet<QGesture *> *conflicts)
{
QSet<QGesture *> normalGestures; // that are not in conflicted state.
- foreach (QGesture *gesture, gestures) {
+ for (QGesture *gesture : gestures) {
if (!gesture->hasHotSpot())
continue;
const Qt::GestureType gestureType = gesture->gestureType();
@@ -6214,7 +6229,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
if (!graphicsView)
return;
- QList<QGesture *> allGestures = event->gestures();
+ const QList<QGesture *> allGestures = event->gestures();
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "Gestures:" << allGestures;
@@ -6222,7 +6237,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
QPoint delta = viewport->mapFromGlobal(QPoint());
QTransform toScene = QTransform::fromTranslate(delta.x(), delta.y())
* graphicsView->viewportTransform().inverted();
- foreach (QGesture *gesture, allGestures) {
+ for (QGesture *gesture : allGestures) {
// cache scene coordinates of the hot spot
if (gesture->hasHotSpot()) {
gesture->d_func()->sceneHotSpot = toScene.map(gesture->hotSpot());
@@ -6257,7 +6272,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
QPointer<QGraphicsObject> item = cachedTargetItems.at(i);
// get gestures to deliver to the current item
- QSet<QGesture *> gestures = conflictedGestures & cachedItemGestures.value(item.data());
+ const QSet<QGesture *> gestures = conflictedGestures & cachedItemGestures.value(item.data());
if (gestures.isEmpty())
continue;
@@ -6270,11 +6285,11 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
ev.setWidget(event->widget());
// mark event and individual gestures as ignored
ev.ignore();
- foreach(QGesture *g, gestures)
+ for (QGesture *g : gestures)
ev.setAccepted(g, false);
sendEvent(item.data(), &ev);
// mark all accepted gestures to deliver them as normal gesture events
- foreach (QGesture *g, gestures) {
+ for (QGesture *g : gestures) {
if (ev.isAccepted() || ev.isAccepted(g)) {
conflictedGestures.remove(g);
// mark the item as a gesture target
@@ -6309,7 +6324,8 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
QGraphicsObject *item = cachedTargetItems.at(i);
// get gestures to deliver to the current item
- foreach (QGesture *g, cachedItemGestures.value(item)) {
+ const auto gestures = cachedItemGestures.value(item);
+ for (QGesture *g : gestures) {
if (!gestureTargets.contains(g)) {
gestureTargets.insert(g, item);
normalGestures.remove(g);
@@ -6323,7 +6339,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
// deliver all gesture events
QSet<QGesture *> undeliveredGestures;
QSet<QGesture *> parentPropagatedGestures;
- foreach (QGesture *gesture, allGestures) {
+ for (QGesture *gesture : allGestures) {
if (QGraphicsObject *target = gestureTargets.value(gesture, 0)) {
cachedItemGestures[target].insert(gesture);
cachedTargetItems.append(target);
@@ -6435,7 +6451,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
}
// forget about targets for gestures that have ended
- foreach (QGesture *g, allGestures) {
+ for (QGesture *g : allGestures) {
switch (g->state()) {
case Qt::GestureFinished:
case Qt::GestureCanceled:
@@ -6495,32 +6511,33 @@ void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original)
}
Q_ASSERT(target);
- QList<QGesture *> list = gestures.toList();
+ const QList<QGesture *> list = gestures.toList();
QGestureEvent ev(list);
sendEvent(target, &ev);
- foreach (QGesture *g, list) {
- if (ev.isAccepted() || ev.isAccepted(g))
- gestures.remove(g);
- }
+ if (!ev.isAccepted()) {
+ for (QGesture *g : list) {
- foreach (QGesture *g, gestures) {
- if (!g->hasHotSpot())
- continue;
+ if (ev.isAccepted(g))
+ continue;
- QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), g->d_func()->sceneHotSpot, 0);
- for (int j = 0; j < items.size(); ++j) {
- QGraphicsObject *item = items.at(j)->toGraphicsObject();
- if (!item)
+ if (!g->hasHotSpot())
continue;
- QGraphicsItemPrivate *d = item->QGraphicsItem::d_func();
- if (d->gestureContext.contains(g->gestureType())) {
- QList<QGesture *> list;
- list << g;
- QGestureEvent ev(list);
- sendEvent(item, &ev);
- if (ev.isAccepted() || ev.isAccepted(g))
- break; // successfully delivered
+
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), g->d_func()->sceneHotSpot, 0);
+ for (int j = 0; j < items.size(); ++j) {
+ QGraphicsObject *item = items.at(j)->toGraphicsObject();
+ if (!item)
+ continue;
+ QGraphicsItemPrivate *d = item->QGraphicsItem::d_func();
+ if (d->gestureContext.contains(g->gestureType())) {
+ QList<QGesture *> list;
+ list << g;
+ QGestureEvent ev(list);
+ sendEvent(item, &ev);
+ if (ev.isAccepted() || ev.isAccepted(g))
+ break; // successfully delivered
+ }
}
}
}
diff --git a/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp b/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
index ce43b1332d..47d599278a 100644
--- a/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
+++ b/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
@@ -77,6 +77,8 @@
#include <QtCore/qmath.h>
#include <QtCore/qdebug.h>
+#include <algorithm>
+
QT_BEGIN_NAMESPACE
static inline int intmaxlog(int n)
@@ -545,23 +547,18 @@ QList<QGraphicsItem *> QGraphicsSceneBspTreeIndex::items(Qt::SortOrder order) co
Q_D(const QGraphicsSceneBspTreeIndex);
const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->purgeRemovedItems();
QList<QGraphicsItem *> itemList;
+ itemList.reserve(d->indexedItems.size() + d->unindexedItems.size());
+
+ // Rebuild the list of items to avoid holes. ### We could also just
+ // compress the item lists at this point.
+ QGraphicsItem *null = nullptr; // work-around for (at least) MSVC 2012 emitting
+ // warning C4100 for its own header <algorithm>
+ // when passing nullptr directly to remove_copy:
+ std::remove_copy(d->indexedItems.cbegin(), d->indexedItems.cend(),
+ std::back_inserter(itemList), null);
+ std::remove_copy(d->unindexedItems.cbegin(), d->unindexedItems.cend(),
+ std::back_inserter(itemList), null);
- // If freeItemIndexes is empty, we know there are no holes in indexedItems and
- // unindexedItems.
- if (d->freeItemIndexes.isEmpty()) {
- if (d->unindexedItems.isEmpty()) {
- itemList = d->indexedItems;
- } else {
- itemList = d->indexedItems + d->unindexedItems;
- }
- } else {
- // Rebuild the list of items to avoid holes. ### We could also just
- // compress the item lists at this point.
- foreach (QGraphicsItem *item, d->indexedItems + d->unindexedItems) {
- if (item)
- itemList << item;
- }
- }
d->sortItems(&itemList, order, d->sortCacheEnabled);
return itemList;
}
diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp
index ac8cd45f9e..ad4733145a 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)));
@@ -2465,7 +2467,7 @@ QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const
{
QPolygonF poly;
poly.reserve(polygon.count());
- foreach (const QPoint &point, polygon)
+ for (const QPoint &point : polygon)
poly << mapToScene(point);
return poly;
}
@@ -2561,7 +2563,7 @@ QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const
{
QPolygon poly;
poly.reserve(polygon.count());
- foreach (const QPointF &point, polygon)
+ for (const QPointF &point : polygon)
poly << mapFromScene(point);
return poly;
}
@@ -2694,7 +2696,7 @@ void QGraphicsView::updateScene(const QList<QRectF> &rects)
QTransform transform = viewportTransform();
// Convert scene rects to viewport rects.
- foreach (const QRectF &rect, rects) {
+ for (const QRectF &rect : rects) {
QRect xrect = transform.mapRect(rect).toAlignedRect();
if (!(d->optimizationFlags & DontAdjustForAntialiasing))
xrect.adjust(-2, -2, 2, 2);
@@ -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
diff --git a/src/widgets/graphicsview/qgraphicswidget.cpp b/src/widgets/graphicsview/qgraphicswidget.cpp
index 8ffb60411c..db1cdd42ab 100644
--- a/src/widgets/graphicsview/qgraphicswidget.cpp
+++ b/src/widgets/graphicsview/qgraphicswidget.cpp
@@ -251,7 +251,8 @@ QGraphicsWidget::~QGraphicsWidget()
//we check if we have a layout previously
if (d->layout) {
QGraphicsLayout *temp = d->layout;
- foreach (QGraphicsItem * item, childItems()) {
+ const auto items = childItems();
+ for (QGraphicsItem *item : items) {
// In case of a custom layout which doesn't remove and delete items, we ensure that
// the parent layout item does not point to the deleted layout. This code is here to
// avoid regression from 4.4 to 4.5, because according to 4.5 docs it is not really needed.
@@ -2056,7 +2057,11 @@ void QGraphicsWidget::insertAction(QAction *before, QAction *action)
\sa removeAction(), QMenu, insertAction(), QWidget::insertActions()
*/
+#if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
+void QGraphicsWidget::insertActions(QAction *before, const QList<QAction *> &actions)
+#else
void QGraphicsWidget::insertActions(QAction *before, QList<QAction *> actions)
+#endif
{
for (int i = 0; i < actions.count(); ++i)
insertAction(before, actions.at(i));
diff --git a/src/widgets/graphicsview/qgraphicswidget.h b/src/widgets/graphicsview/qgraphicswidget.h
index 0878e020bc..f922e80782 100644
--- a/src/widgets/graphicsview/qgraphicswidget.h
+++ b/src/widgets/graphicsview/qgraphicswidget.h
@@ -139,11 +139,12 @@ public:
void addAction(QAction *action);
#if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
void addActions(const QList<QAction*> &actions);
+ void insertActions(QAction *before, const QList<QAction*> &actions);
#else
void addActions(QList<QAction*> actions);
+ void insertActions(QAction *before, QList<QAction*> actions);
#endif
void insertAction(QAction *before, QAction *action);
- void insertActions(QAction *before, QList<QAction*> actions);
void removeAction(QAction *action);
QList<QAction*> actions() const;
#endif
diff --git a/src/widgets/graphicsview/qgraphicswidget_p.cpp b/src/widgets/graphicsview/qgraphicswidget_p.cpp
index e9ab6dffec..f70862fbf3 100644
--- a/src/widgets/graphicsview/qgraphicswidget_p.cpp
+++ b/src/widgets/graphicsview/qgraphicswidget_p.cpp
@@ -86,6 +86,25 @@ qreal QGraphicsWidgetPrivate::titleBarHeight(const QStyleOptionTitleBar &options
/*!
\internal
*/
+QGraphicsWidgetPrivate::QGraphicsWidgetPrivate()
+ : margins(nullptr),
+ layout(nullptr),
+ inheritedPaletteResolveMask(0),
+ inheritedFontResolveMask(0),
+ inSetGeometry(false),
+ polished(false),
+ inSetPos(false),
+ autoFillBackground(false),
+ focusPolicy(Qt::NoFocus),
+ focusNext(nullptr),
+ focusPrev(nullptr),
+ windowFlags(),
+ windowData(nullptr),
+ setWindowFrameMargins(false),
+ windowFrameMargins(nullptr)
+{
+}
+
QGraphicsWidgetPrivate::~QGraphicsWidgetPrivate()
{
// Remove any lazily allocated data
diff --git a/src/widgets/graphicsview/qgraphicswidget_p.h b/src/widgets/graphicsview/qgraphicswidget_p.h
index 7054dfcc2b..bca30deb9b 100644
--- a/src/widgets/graphicsview/qgraphicswidget_p.h
+++ b/src/widgets/graphicsview/qgraphicswidget_p.h
@@ -64,23 +64,7 @@ class QGraphicsWidgetPrivate : public QGraphicsItemPrivate
{
Q_DECLARE_PUBLIC(QGraphicsWidget)
public:
- QGraphicsWidgetPrivate()
- : margins(0),
- layout(0),
- inheritedPaletteResolveMask(0),
- inheritedFontResolveMask(0),
- inSetGeometry(0),
- polished(0),
- inSetPos(0),
- autoFillBackground(0),
- focusPolicy(Qt::NoFocus),
- focusNext(0),
- focusPrev(0),
- windowFlags(0),
- windowData(0),
- setWindowFrameMargins(false),
- windowFrameMargins(0)
- { }
+ QGraphicsWidgetPrivate();
virtual ~QGraphicsWidgetPrivate();
void init(QGraphicsItem *parentItem, Qt::WindowFlags wFlags);
diff --git a/src/widgets/graphicsview/qsimplex_p.cpp b/src/widgets/graphicsview/qsimplex_p.cpp
index b827ab1400..d4e2e2f922 100644
--- a/src/widgets/graphicsview/qsimplex_p.cpp
+++ b/src/widgets/graphicsview/qsimplex_p.cpp
@@ -153,9 +153,11 @@ bool QSimplex::setConstraints(const QList<QSimplexConstraint *> &newConstraints)
// "variables" is a list that provides a stable, indexed list of all variables
// used in this problem.
QSet<QSimplexVariable *> variablesSet;
- for (int i = 0; i < constraints.size(); ++i)
- variablesSet += \
- QSet<QSimplexVariable *>::fromList(constraints[i]->variables.keys());
+ for (int i = 0; i < constraints.size(); ++i) {
+ const auto &v = constraints.at(i)->variables;
+ for (auto it = v.cbegin(), end = v.cend(); it != end; ++it)
+ variablesSet.insert(it.key());
+ }
variables = variablesSet.toList();
// Set Variables reverse mapping