X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatitem.cpp;h=6efe8c2a56187fad0dc81368800b764cfd7a906a;hp=c12d5c5b92b5fe1712b1c52c42415fbad3d5be8f;hb=2a5eaae0ee442dcae4076c161e788adf9e9d88c8;hpb=84ff541e038763977a99642a90af11ee995c440d diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index c12d5c5b..6efe8c2a 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -47,10 +47,12 @@ QVariant ChatItem::data(int role) const { } int ChatItem::setWidth(int w) { + w -= 10; if(w == _boundingRect.width()) return _boundingRect.height(); int h = heightForWidth(w); _boundingRect.setWidth(w); _boundingRect.setHeight(h); + if(haveLayout()) updateLayout(); return h; } @@ -76,7 +78,7 @@ int ChatItem::heightForWidth(int width) { } void ChatItem::layout() { - if(_layout) return; + if(haveLayout()) return; _layout = new QTextLayout(data(MessageModel::DisplayRole).toString()); // Convert format information into a FormatRange @@ -92,6 +94,11 @@ void ChatItem::layout() { } if(i > 0) formatRanges.last().length = _layout->text().length() - formatRanges.last().start; _layout->setAdditionalFormats(formatRanges); + updateLayout(); +} + +void ChatItem::updateLayout() { + if(!haveLayout()) layout(); // Now layout qreal h = 0; @@ -118,6 +125,7 @@ void ChatItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q_UNUSED(option); Q_UNUSED(widget); layout(); _layout->draw(painter, QPointF(0,0), QVector(), boundingRect()); + painter->drawRect(boundingRect()); } /*