X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatitem.cpp;h=c40fd34b96b687fba09b544763c9dbf4580a6226;hp=e3ab1abb408f148b90979c36b715b6c2e458f07d;hb=5bc6dee39199868071a4926ae9859daa587537f7;hpb=d36a37a4a2e2fa889cf12d596258f9ba4dfcc5ed diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index e3ab1abb..c40fd34b 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -426,7 +426,8 @@ qreal ContentsChatItem::setGeometryByWidth(qreal w) { WrapColumnFinder finder(this); while(finder.nextWrapColumn(w) > 0) lines++; - qreal h = lines * fontMetrics()->lineSpacing(); + qreal spacing = qMax(fontMetrics()->lineSpacing(), fontMetrics()->height()); // cope with negative leading() + qreal h = lines * spacing; delete _data; _data = 0; @@ -443,6 +444,7 @@ void ContentsChatItem::doLayout(QTextLayout *layout) const { if(!wrapList.count()) return; // empty chatitem qreal h = 0; + qreal spacing = qMax(fontMetrics()->lineSpacing(), fontMetrics()->height()); // cope with negative leading() WrapColumnFinder finder(this); layout->beginLayout(); forever { @@ -460,7 +462,7 @@ void ContentsChatItem::doLayout(QTextLayout *layout) const { // Sometimes, setNumColumns will create a line that's too long (cf. Qt bug 238249) // We verify this and try setting the width again, making it shorter each time until the lengths match. // Dead fugly, but seems to work… - for(int i = line.textLength()-1; line.textLength() > num; i--) { + for(int i = line.textLength()-1; i >= 0 && line.textLength() > num; i--) { line.setNumColumns(i); } if(num != line.textLength()) { @@ -469,7 +471,7 @@ void ContentsChatItem::doLayout(QTextLayout *layout) const { } line.setPosition(QPointF(0, h)); - h += fontMetrics()->lineSpacing(); + h += spacing; } layout->endLayout(); }