From a4f2082d34f5ef337ec5f280bd2a531eefb32e7f Mon Sep 17 00:00:00 2001 From: "Eduardo M. Fleury" Date: Thu, 28 May 2009 12:37:00 -0300 Subject: QGraphicsAnchorLayout: Bugfix in preferred size calculation Observe the "skipInPreferred" flag in AnchorEdges to avoid adding the layout internal anchors to the preferred size calculation, what was leading to non-optimal results. Signed-off-by: Eduardo M. Fleury --- src/gui/graphicsview/qgraphicsanchorlayout_p.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp index c95baa3..d3d0072 100644 --- a/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp +++ b/src/gui/graphicsview/qgraphicsanchorlayout_p.cpp @@ -1020,13 +1020,17 @@ void QGraphicsAnchorLayoutPrivate::solvePreferred(QList co // A + A_shrinker - A_grower = A_pref // for (int i = 0; i < variables.size(); ++i) { + AnchorData *ad = static_cast(variables[i]); + if (ad->skipInPreferred) + continue; + QSimplexVariable *grower = new QSimplexVariable; QSimplexVariable *shrinker = new QSimplexVariable; QSimplexConstraint *c = new QSimplexConstraint; - c->variables.insert(variables[i], 1.0); + c->variables.insert(ad, 1.0); c->variables.insert(shrinker, 1.0); c->variables.insert(grower, -1.0); - c->constant = variables[i]->prefSize; + c->constant = ad->prefSize; preferredConstraints += c; preferredVariables += grower; @@ -1045,7 +1049,7 @@ void QGraphicsAnchorLayoutPrivate::solvePreferred(QList co // Calculate minimum values qreal min = simplex.solveMin(); - // Save sizeAtMinimum results + // Save sizeAtPreferred results for (int i = 0; i < variables.size(); ++i) { AnchorData *ad = static_cast(variables[i]); ad->sizeAtPreferred = ad->result; -- cgit v0.12