qquicktext: Fix using CSS line-height with RichText
authorKai Uwe Broulik <kde@privat.broulik.de>
Fri, 10 Jul 2015 13:46:55 +0000 (15:46 +0200)
committerKai Uwe Broulik <kde@privat.broulik.de>
Mon, 20 Jul 2015 10:33:41 +0000 (10:33 +0000)
Only if lineHeight has explicitly been set it will override the block format.

Task-number: QTBUG-45204
Change-Id: I6e0d6dd70460cbf436dda3e5640bb9b1d16d7e5a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
src/quick/items/qquicktext.cpp
src/quick/items/qquicktext_p_p.h

index dd4f57bfdbfd2d9310d95852ebf04df9badbba5b..205571f2e7f157970f0bfa7cbe17a9b854f41321 100644 (file)
@@ -91,6 +91,7 @@ QQuickTextPrivate::ExtraData::ExtraData()
     , minimumPointSize(12)
     , nbActiveDownloads(0)
     , maximumLineCount(INT_MAX)
+    , lineHeightValid(false)
     , lineHeightMode(QQuickText::ProportionalHeight)
     , fontSizeMode(QQuickText::FixedSize)
 {
@@ -344,7 +345,7 @@ void QQuickTextPrivate::updateLayout()
             }
             textHasChanged = false;
         }
-    } else {
+    } else if (extra.isAllocated() && extra->lineHeightValid) {
         ensureDoc();
         QTextBlockFormat::LineHeightTypes type;
         type = lineHeightMode() == QQuickText::FixedHeight ? QTextBlockFormat::FixedHeight : QTextBlockFormat::ProportionalHeight;
@@ -2386,6 +2387,7 @@ void QQuickText::setLineHeight(qreal lineHeight)
     if ((d->lineHeight() == lineHeight) || (lineHeight < 0.0))
         return;
 
+    d->extra.value().lineHeightValid = true;
     d->extra.value().lineHeight = lineHeight;
     d->implicitHeightValid = false;
     d->updateLayout();
@@ -2417,6 +2419,7 @@ void QQuickText::setLineHeightMode(LineHeightMode mode)
         return;
 
     d->implicitHeightValid = false;
+    d->extra.value().lineHeightValid = true;
     d->extra.value().lineHeightMode = mode;
     d->updateLayout();
 
index 9a6da3736e5ba927785e293d20ea786080eb8089..cd14008728fd850620436e5bacc136e7c716e539 100644 (file)
@@ -95,6 +95,7 @@ public:
         int minimumPointSize;
         int nbActiveDownloads;
         int maximumLineCount;
+        bool lineHeightValid : 1;
         QQuickText::LineHeightMode lineHeightMode;
         QQuickText::FontSizeMode fontSizeMode;
         QList<QQuickStyledTextImgTag*> imgTags;