From ca6b36e21fb99ddc01a954e4734c24aa2732780c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 5 Oct 2013 01:43:29 +0200 Subject: QMdiArea: don't use out parameters, return by value Change-Id: I787b56033899d6845886c4707cf3acf7428f94a2 Reviewed-by: Friedemann Kleint Reviewed-by: Thiago Macieira --- src/widgets/widgets/qmdiarea.cpp | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) (limited to 'src/widgets/widgets/qmdiarea.cpp') diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp index f06370bbcf..d0488d5955 100644 --- a/src/widgets/widgets/qmdiarea.cpp +++ b/src/widgets/widgets/qmdiarea.cpp @@ -447,9 +447,11 @@ QRect MinOverlapPlacer::findMinOverlapRect(const QVector &source, const Q \internal Gets candidates for the final placement. */ -void MinOverlapPlacer::getCandidatePlacements(const QSize &size, const QVector &rects, - const QRect &domain,QVector &candidates) +QVector MinOverlapPlacer::getCandidatePlacements(const QSize &size, const QVector &rects, + const QRect &domain) { + QVector result; + QVector xlist; xlist.reserve(2 + rects.size()); xlist << domain.left() << domain.right() - size.width() + 1; @@ -471,10 +473,11 @@ void MinOverlapPlacer::getCandidatePlacements(const QSize &size, const QVector &source, - QVector &result) +QVector MinOverlapPlacer::findNonInsiders(const QRect &domain, QVector &source) { + QVector result; + result.reserve(source.size()); + QMutableVectorIterator it(source); while (it.hasNext()) { const QRect srcRect = it.next(); @@ -493,6 +498,8 @@ void MinOverlapPlacer::findNonInsiders(const QRect &domain, QVector &sour it.remove(); } } + + return result; } /*! @@ -500,9 +507,11 @@ void MinOverlapPlacer::findNonInsiders(const QRect &domain, QVector &sour Finds all rectangles in 'source' that overlaps 'domain' by the maximum overlap area between 'domain' and any rectangle in 'source'. The result is stored in 'result'. */ -void MinOverlapPlacer::findMaxOverlappers(const QRect &domain, const QVector &source, - QVector &result) +QVector MinOverlapPlacer::findMaxOverlappers(const QRect &domain, const QVector &source) { + QVector result; + result.reserve(source.size()); + int maxOverlap = -1; foreach (const QRect &srcRect, source) { QRect intersection = domain.intersected(srcRect); @@ -515,6 +524,8 @@ void MinOverlapPlacer::findMaxOverlappers(const QRect &domain, const QVector &rects, QVector &source) { - QVector nonInsiders; - findNonInsiders(domain, source, nonInsiders); + const QVector nonInsiders = findNonInsiders(domain, source); if (!source.empty()) return findMinOverlapRect(source, rects).topLeft(); - QVector maxOverlappers; - findMaxOverlappers(domain, nonInsiders, maxOverlappers); + QVector maxOverlappers = findMaxOverlappers(domain, nonInsiders); return findMinOverlapRect(maxOverlappers, rects).topLeft(); } @@ -554,8 +563,7 @@ QPoint MinOverlapPlacer::place(const QSize &size, const QVector &rects, return QPoint(); } - QVector candidates; - getCandidatePlacements(size, rects, domain, candidates); + QVector candidates = getCandidatePlacements(size, rects, domain); return findBestPlacement(domain, rects, candidates); } -- cgit v1.2.3