diff options
Diffstat (limited to 'src/gui/graphicsview')
-rw-r--r-- | src/gui/graphicsview/qgraphicsanchorlayout.cpp | 3 | ||||
-rw-r--r-- | src/gui/graphicsview/qgraphicsanchorlayout_p.cpp | 18 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/gui/graphicsview/qgraphicsanchorlayout.cpp b/src/gui/graphicsview/qgraphicsanchorlayout.cpp index fe335e8..6360e75 100644 --- a/src/gui/graphicsview/qgraphicsanchorlayout.cpp +++ b/src/gui/graphicsview/qgraphicsanchorlayout.cpp @@ -200,9 +200,6 @@ void QGraphicsAnchorLayout::removeAnchor(QGraphicsLayoutItem *firstItem, Edge fi } d->removeAnchor(firstItem, firstEdge, secondItem, secondEdge); - d->removeCenterAnchors(firstItem, firstEdge); - d->removeCenterAnchors(secondItem, secondEdge); - invalidate(); } diff --git a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp index 7516c06..afe60a1 100644 --- a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp +++ b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp @@ -456,6 +456,9 @@ void QGraphicsAnchorLayoutPrivate::deleteLayoutEdges() { Q_Q(QGraphicsAnchorLayout); + Q_ASSERT(internalVertex(q, QGraphicsAnchorLayout::HCenter) == NULL); + Q_ASSERT(internalVertex(q, QGraphicsAnchorLayout::VCenter) == NULL); + removeAnchor(q, QGraphicsAnchorLayout::Left, q, QGraphicsAnchorLayout::Right); removeAnchor(q, QGraphicsAnchorLayout::Top, q, QGraphicsAnchorLayout::Bottom); } @@ -568,11 +571,6 @@ void QGraphicsAnchorLayoutPrivate::removeCenterAnchors( return; } - // Check if vertex is used by other than the internal anchors - AnchorVertex *center = internalVertex(item, centerEdge); - if (graph[orientation].adjacentVertices(center).count() > 2) - return; - // Orientation code QGraphicsAnchorLayout::Edge firstEdge; QGraphicsAnchorLayout::Edge lastEdge; @@ -586,8 +584,10 @@ void QGraphicsAnchorLayoutPrivate::removeCenterAnchors( } AnchorVertex *first = internalVertex(item, firstEdge); + AnchorVertex *center = internalVertex(item, centerEdge); AnchorVertex *last = internalVertex(item, lastEdge); - Q_ASSERT(first && last); + Q_ASSERT(first && center && last); + Q_ASSERT(graph[orientation].adjacentVertices(center).count() == 2); // Create new anchor AnchorData *oldData = graph[orientation].edgeData(first, center); @@ -792,6 +792,12 @@ void QGraphicsAnchorLayoutPrivate::removeInternalVertex(QGraphicsLayoutItem *ite } else { // Update reference count m_vertexList.insert(pair, v); + + if ((v.second == 2) && + ((edge == QGraphicsAnchorLayout::HCenter) || + (edge == QGraphicsAnchorLayout::VCenter))) { + removeCenterAnchors(item, edge); + } } } |