X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatitem.cpp;h=ac2558ecddc7444eff7dd46c4e4ee319cb564273;hp=495a97ef434b2a0a376721e6db47d9f29160bca2;hb=429f2aad1e22ba8410f4ea63471fcfc9887c55aa;hpb=176d22d49934223b9279719ac5d9e7c03e530d40 diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index 495a97ef..ac2558ec 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -32,17 +32,13 @@ #include "qtui.h" #include "qtuistyle.h" -ChatItem::ChatItem(const qreal &width, const qreal &height, const QPointF &pos, ChatLineModel::ColumnType col, QGraphicsItem *parent) +ChatItem::ChatItem(const qreal &width, const qreal &height, const QPointF &pos, QGraphicsItem *parent) : QGraphicsItem(parent), _data(0), _boundingRect(0, 0, width, height), - _fontMetrics(0), _selectionMode(NoSelection), _selectionStart(-1) { - const QAbstractItemModel *model_ = model(); - QModelIndex index = model_->index(row(), col); - _fontMetrics = QtUi::style()->fontMetrics(model_->data(index, ChatLineModel::FormatRole).value().at(0).second); setAcceptHoverEvents(true); setZValue(20); setPos(pos); @@ -185,17 +181,21 @@ QList ChatItem::findWords(const QString &searchWord, Qt::CaseSensitivity searchIdx = plainText.indexOf(searchWord, searchIdx + 1, caseSensitive); } - if(!hasLayout()) + bool hadLayout = hasLayout(); + if(!hadLayout) updateLayout(); foreach(int idx, indexList) { QTextLine line = layout()->lineForTextPosition(idx); qreal x = line.cursorToX(idx); qreal width = line.cursorToX(idx + searchWord.count()) - x; - qreal height = fontMetrics()->lineSpacing(); + qreal height = line.height(); qreal y = height * line.lineNumber(); resultList << QRectF(x, y, width, height); } + + if(!hadLayout) + clearLayout(); return resultList; } @@ -250,8 +250,12 @@ void ChatItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { // ContentsChatItem // ************************************************************ ContentsChatItem::ContentsChatItem(const qreal &width, const QPointF &pos, QGraphicsItem *parent) - : ChatItem(0, 0, pos, column(), parent) + : ChatItem(0, 0, pos, parent) { + const QAbstractItemModel *model_ = model(); + QModelIndex index = model_->index(row(), column()); + _fontMetrics = QtUi::style()->fontMetrics(model_->data(index, ChatLineModel::FormatRole).value().at(0).second); + setGeometryByWidth(width); }