aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/widgets/Common.cpp
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-09-07 08:27:11 -0300
committerGitHub <noreply@github.com>2022-09-07 08:27:11 -0300
commit1b0ca476824ad3d704de70720184d2f1e194d2f5 (patch)
tree6d5574a10b1fd34af511f9126c51e62b5a994516 /launcher/ui/widgets/Common.cpp
parent8e3f5c33057175b83ef276914d81ed4d5616d6e5 (diff)
parent4a8abc948ef15664dbde196ba77daccdf3d623ad (diff)
downloadPrismLauncher-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.cpp22
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;
}