From 046622cdf3b6f856f67ab314c7758aca4dcf5494 Mon Sep 17 00:00:00 2001 From: Igor Mironchik Date: Thu, 18 Jan 2018 09:58:59 +0300 Subject: Fix explicitly set width not being respected The size of the QStaticText was always adjusted, even if setTextWidth() was used. Now size of the QStaticText is calculated according to the set width of the text, and if no width was set, then the automatically adjusted size is used. [ChangeLog][QtGui][QStaticText] Fixed explicitly set width not being respected. Task-number: QTBUG-65836 Change-Id: If2f9f6952fb168f4bcb6d8fabfdc7360f8a36485 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qstatictext.cpp | 3 -- .../auto/gui/text/qstatictext/tst_qstatictext.cpp | 39 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp index 68f33a8ed7..2f90754274 100644 --- a/src/gui/text/qstatictext.cpp +++ b/src/gui/text/qstatictext.cpp @@ -662,9 +662,6 @@ void QStaticTextPrivate::paintText(const QPointF &topLeftPosition, QPainter *p, document.documentLayout()->draw(p, ctx); p->restore(); - if (textWidth >= 0.0) - document.adjustSize(); // Find optimal size - actualSize = document.size(); } } diff --git a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp index e3cb265ebe..45cc94afad 100644 --- a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp +++ b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp @@ -98,6 +98,8 @@ private slots: void multiLine(); + void size_qtbug65836(); + private: bool supportsTransformations() const; @@ -912,5 +914,42 @@ void tst_QStaticText::multiLine() QCOMPARE(paintEngine->differentVerticalPositions.size(), 2); } +void tst_QStaticText::size_qtbug65836() +{ + const QString text = QLatin1String("Lorem ipsum dolor sit amet, " + "consectetur adipiscing elit."); + QFont font("Courier"); + font.setPixelSize(15); + + { + QStaticText st1(text); + st1.setTextFormat(Qt::PlainText); + st1.prepare(QTransform(), font); + + QStaticText st2(text); + st2.setTextFormat(Qt::RichText); + QTextOption opt; + opt.setWrapMode(QTextOption::NoWrap); + st2.setTextOption(opt); + st2.prepare(QTransform(), font); + + QCOMPARE(st1.size(), st2.size()); + } + + { + QStaticText st1(text); + st1.setTextFormat(Qt::PlainText); + st1.setTextWidth(10.0); + st1.prepare(QTransform(), font); + + QStaticText st2(text); + st2.setTextFormat(Qt::RichText); + st2.setTextWidth(10.0); + st2.prepare(QTransform(), font); + + QCOMPARE(st1.size(), st2.size()); + } +} + QTEST_MAIN(tst_QStaticText) #include "tst_qstatictext.moc" -- cgit v1.2.3