QGraphicsAnchorLayout: port to QHVContainer [2/4]: edgeOrientation()

Port edgeOrientation() and all its callers from Orientation to
Qt::Orientation.

This function is singled out, since one caller is performing a
conversion from Orientation to Qt::Orientation, which, if left
unchanged, would cause an off-by-one bug.

Change-Id: I37365195ea9552243822803b095a3926a28e7dd0
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This commit is contained in:
Marc Mutz 2020-05-05 15:28:46 +02:00
parent 3144f90d93
commit a5094bc270
2 changed files with 10 additions and 10 deletions

View File

@ -227,7 +227,7 @@ void AnchorData::refreshSizeHints(const QLayoutStyleInfo *styleInfo)
prefSizeHint = anchorPrivate->preferredSize; prefSizeHint = anchorPrivate->preferredSize;
} else { } else {
// Fetch size information from style // Fetch size information from style
const Qt::Orientation orient = Qt::Orientation(QGraphicsAnchorLayoutPrivate::edgeOrientation(from->m_edge) + 1); const Qt::Orientation orient = QGraphicsAnchorLayoutPrivate::edgeOrientation(from->m_edge);
qreal s = styleInfo->defaultSpacing(orient); qreal s = styleInfo->defaultSpacing(orient);
if (s < 0) { if (s < 0) {
QSizePolicy::ControlType controlTypeFrom = from->m_item->sizePolicy().controlType(); QSizePolicy::ControlType controlTypeFrom = from->m_item->sizePolicy().controlType();
@ -1343,10 +1343,10 @@ void QGraphicsAnchorLayoutPrivate::restoreVertices(Orientation orientation)
toRestore.clear(); toRestore.clear();
} }
QGraphicsAnchorLayoutPrivate::Orientation Qt::Orientation
QGraphicsAnchorLayoutPrivate::edgeOrientation(Qt::AnchorPoint edge) QGraphicsAnchorLayoutPrivate::edgeOrientation(Qt::AnchorPoint edge) noexcept
{ {
return edge > Qt::AnchorRight ? Vertical : Horizontal; return edge > Qt::AnchorRight ? Qt::Vertical : Qt::Horizontal;
} }
/*! /*!
@ -1718,7 +1718,7 @@ void QGraphicsAnchorLayoutPrivate::addAnchor_helper(QGraphicsLayoutItem *firstIt
{ {
Q_Q(QGraphicsAnchorLayout); Q_Q(QGraphicsAnchorLayout);
const Orientation orientation = edgeOrientation(firstEdge); const Qt::Orientation orientation = edgeOrientation(firstEdge);
// Create or increase the reference count for the related vertices. // Create or increase the reference count for the related vertices.
AnchorVertex *v1 = addInternalVertex(firstItem, firstEdge); AnchorVertex *v1 = addInternalVertex(firstItem, firstEdge);
@ -1733,7 +1733,7 @@ void QGraphicsAnchorLayoutPrivate::addAnchor_helper(QGraphicsLayoutItem *firstIt
if (firstItem == secondItem) if (firstItem == secondItem)
data->item = firstItem; data->item = firstItem;
data->isVertical = orientation == Vertical; data->isVertical = orientation == Qt::Vertical;
// Create a bi-directional edge in the sense it can be transversed both // Create a bi-directional edge in the sense it can be transversed both
// from v1 or v2. "data" however is shared between the two references // from v1 or v2. "data" however is shared between the two references
@ -1759,7 +1759,7 @@ QGraphicsAnchor *QGraphicsAnchorLayoutPrivate::getAnchor(QGraphicsLayoutItem *fi
if (firstItem == secondItem) if (firstItem == secondItem)
return nullptr; return nullptr;
const Orientation orientation = edgeOrientation(firstEdge); const Qt::Orientation orientation = edgeOrientation(firstEdge);
AnchorVertex *v1 = internalVertex(firstItem, firstEdge); AnchorVertex *v1 = internalVertex(firstItem, firstEdge);
AnchorVertex *v2 = internalVertex(secondItem, secondEdge); AnchorVertex *v2 = internalVertex(secondItem, secondEdge);
@ -1864,7 +1864,7 @@ void QGraphicsAnchorLayoutPrivate::removeAnchor_helper(AnchorVertex *v1, AnchorV
Q_ASSERT(v1 && v2); Q_ASSERT(v1 && v2);
// Remove edge from graph // Remove edge from graph
const Orientation o = edgeOrientation(v1->m_edge); const Qt::Orientation o = edgeOrientation(v1->m_edge);
graph[o].removeEdge(v1, v2); graph[o].removeEdge(v1, v2);
// Decrease vertices reference count (may trigger a deletion) // Decrease vertices reference count (may trigger a deletion)
@ -1925,7 +1925,7 @@ void QGraphicsAnchorLayoutPrivate::removeVertex(QGraphicsLayoutItem *item, Qt::A
{ {
if (AnchorVertex *v = internalVertex(item, edge)) { if (AnchorVertex *v = internalVertex(item, edge)) {
Graph<AnchorVertex, AnchorData> &g = graph[edgeOrientation(edge)]; Graph<AnchorVertex, AnchorData> &g = graph[edgeOrientation(edge)];
const QList<AnchorVertex *> allVertices = graph[edgeOrientation(edge)].adjacentVertices(v); const auto allVertices = g.adjacentVertices(v);
for (auto *v2 : allVertices) { for (auto *v2 : allVertices) {
g.removeEdge(v, v2); g.removeEdge(v, v2);
removeInternalVertex(item, edge); removeInternalVertex(item, edge);

View File

@ -427,7 +427,7 @@ public:
static Qt::AnchorPoint oppositeEdge( static Qt::AnchorPoint oppositeEdge(
Qt::AnchorPoint edge); Qt::AnchorPoint edge);
static Orientation edgeOrientation(Qt::AnchorPoint edge); static Qt::Orientation edgeOrientation(Qt::AnchorPoint edge) noexcept;
static Qt::AnchorPoint pickEdge(Qt::AnchorPoint edge, Orientation orientation) static Qt::AnchorPoint pickEdge(Qt::AnchorPoint edge, Orientation orientation)
{ {