diff options
author | flow <flowlnlnln@gmail.com> | 2022-09-07 08:27:11 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-07 08:27:11 -0300 |
commit | 1b0ca476824ad3d704de70720184d2f1e194d2f5 (patch) | |
tree | 6d5574a10b1fd34af511f9126c51e62b5a994516 /launcher/ui/widgets/Common.cpp | |
parent | 8e3f5c33057175b83ef276914d81ed4d5616d6e5 (diff) | |
parent | 4a8abc948ef15664dbde196ba77daccdf3d623ad (diff) | |
download | PrismLauncher-1b0ca476824ad3d704de70720184d2f1e194d2f5.tar.gz PrismLauncher-1b0ca476824ad3d704de70720184d2f1e194d2f5.tar.bz2 PrismLauncher-1b0ca476824ad3d704de70720184d2f1e194d2f5.zip |
Merge pull request #939 from flowln/mod_downloader_improve
Some more UI / UX improvements to the mod downloader!
Diffstat (limited to 'launcher/ui/widgets/Common.cpp')
-rw-r--r-- | launcher/ui/widgets/Common.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/launcher/ui/widgets/Common.cpp b/launcher/ui/widgets/Common.cpp index f72f3596..097bb6d4 100644 --- a/launcher/ui/widgets/Common.cpp +++ b/launcher/ui/widgets/Common.cpp @@ -1,27 +1,33 @@ #include "Common.h" // Origin: Qt -QStringList viewItemTextLayout(QTextLayout &textLayout, int lineWidth, qreal &height, - qreal &widthUsed) +// More specifically, this is a trimmed down version on the algorithm in: +// https://code.woboq.org/qt5/qtbase/src/widgets/styles/qcommonstyle.cpp.html#846 +QList<std::pair<qreal, QString>> viewItemTextLayout(QTextLayout& textLayout, int lineWidth, qreal& height) { - QStringList lines; + QList<std::pair<qreal, QString>> lines; height = 0; - widthUsed = 0; + textLayout.beginLayout(); + QString str = textLayout.text(); - while (true) - { + while (true) { QTextLine line = textLayout.createLine(); + if (!line.isValid()) break; if (line.textLength() == 0) break; + line.setLineWidth(lineWidth); line.setPosition(QPointF(0, height)); + height += line.height(); - lines.append(str.mid(line.textStart(), line.textLength())); - widthUsed = qMax(widthUsed, line.naturalTextWidth()); + + lines.append(std::make_pair(line.naturalTextWidth(), str.mid(line.textStart(), line.textLength()))); } + textLayout.endLayout(); + return lines; } |