From 22a6ce9b329a081d07296533980d374b0c7ad88b Mon Sep 17 00:00:00 2001 From: "Eduardo M. Fleury" Date: Thu, 9 Jul 2009 15:12:29 -0300 Subject: QGraphicsAnchorLayout: Do not create center anchors by default Previously we would create two half anchors internally to each item added to the layout. These anchors are meant to enforce the central anchorage point remains on its position. It is not effecient however, to create these anchors for all items if not all of them will have anchors linked to their center. This commit removes the creation of center anchors, the idea is to postpone this to the moment their are really needed, therefore reducing the number of variables and constraints sent to the simplex solver on the average case. Signed-off-by: Eduardo M. Fleury Reviewed-by: Anselmo Lacerda S. de Melo --- src/gui/graphicsview/qgraphicsanchorlayout_p.cpp | 36 ++++++------------------ 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp index 9d145a2..1564163 100644 --- a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp +++ b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp @@ -487,42 +487,22 @@ void QGraphicsAnchorLayoutPrivate::createItemEdges(QGraphicsLayoutItem *item) items.append(item); // Horizontal - int minimumSize = item->minimumWidth() / 2; - int preferredSize = item->preferredWidth() / 2; - int maximumSize = item->maximumWidth() / 2; - - QSimplexConstraint *c = new QSimplexConstraint; + int minimumSize = item->minimumWidth(); + int preferredSize = item->preferredWidth(); + int maximumSize = item->maximumWidth(); AnchorData *data = new AnchorData(minimumSize, preferredSize, maximumSize); addAnchor(item, QGraphicsAnchorLayout::Left, item, - QGraphicsAnchorLayout::HCenter, data); - c->variables.insert(data, 1.0); - - data = new AnchorData(minimumSize, preferredSize, maximumSize); - addAnchor(item, QGraphicsAnchorLayout::HCenter, - item, QGraphicsAnchorLayout::Right, data); - c->variables.insert(data, -1.0); - - itemCenterConstraints[Horizontal].append(c); + QGraphicsAnchorLayout::Right, data); // Vertical - minimumSize = item->minimumHeight() / 2; - preferredSize = item->preferredHeight() / 2; - maximumSize = item->maximumHeight() / 2; - - c = new QSimplexConstraint; + minimumSize = item->minimumHeight(); + preferredSize = item->preferredHeight(); + maximumSize = item->maximumHeight(); data = new AnchorData(minimumSize, preferredSize, maximumSize); addAnchor(item, QGraphicsAnchorLayout::Top, item, - QGraphicsAnchorLayout::VCenter, data); - c->variables.insert(data, 1.0); - - data = new AnchorData(minimumSize, preferredSize, maximumSize); - addAnchor(item, QGraphicsAnchorLayout::VCenter, - item, QGraphicsAnchorLayout::Bottom, data); - c->variables.insert(data, -1.0); - - itemCenterConstraints[Vertical].append(c); + QGraphicsAnchorLayout::Bottom, data); } void QGraphicsAnchorLayoutPrivate::removeCenterConstraints(QGraphicsLayoutItem *item, -- cgit v0.12