X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatline.cpp;h=4f03794e6f89ebc9c18929f212141ecd9e1588de;hp=08d089ecf113233125199706404dc8714dc257b5;hb=c80e9d81bfecf4126ed5a0a8b34802aa320ade0c;hpb=e19eef8ec30a926e5a847a7570bb966bc86f602e diff --git a/src/qtui/chatline.cpp b/src/qtui/chatline.cpp index 08d089ec..4f03794e 100644 --- a/src/qtui/chatline.cpp +++ b/src/qtui/chatline.cpp @@ -59,6 +59,11 @@ ChatLine::ChatLine(int row, QAbstractItemModel *model, setHighlighted(index.data(MessageModel::FlagsRole).toInt() & Message::Highlight); } +ChatLine::~ChatLine() { + if(chatView()) + chatView()->setHasCache(this, false); +} + ChatItem *ChatLine::item(ChatLineModel::ColumnType column) { switch(column) { case ChatLineModel::TimestampColumn: @@ -82,6 +87,12 @@ ChatItem *ChatLine::itemAt(const QPointF &pos) { return 0; } +void ChatLine::clearCache() { + _timestampItem.clearCache(); + _senderItem.clearCache(); + _contentsItem.clearCache(); +} + void ChatLine::setMouseGrabberItem(ChatItem *item) { _mouseGrabberItem = item; } @@ -198,25 +209,6 @@ void ChatLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, timestampItem()->paint(painter, option, widget); senderItem()->paint(painter, option, widget); contentsItem()->paint(painter, option, widget); - - // new line marker - if(model_ && row() > 0 && chatScene()->isSingleBufferScene()) { - QModelIndex prevRowIdx = model_->index(row() - 1, 0); - MsgId prevMsgId = prevRowIdx.data(MessageModel::MsgIdRole).value(); - MsgId myMsgId = myIdx.data(MessageModel::MsgIdRole).value(); - Message::Flags flags = (Message::Flags)myIdx.data(MessageModel::FlagsRole).toInt(); - - if(chatView()->isMarkerLineVisible()) { - BufferId bufferId = BufferId(chatScene()->idString().toInt()); - MsgId lastSeenMsgId = Client::networkModel()->markerLineMsgId(bufferId); - if(lastSeenMsgId < myMsgId && lastSeenMsgId >= prevMsgId) { - QLinearGradient gradient(0, 0, 0, contentsItem()->fontMetrics()->lineSpacing()); - gradient.setColorAt(0, QtUi::style()->brush(UiStyle::MarkerLine).color()); // FIXME: Use full (gradient?) brush instead of just the color - gradient.setColorAt(0.1, Qt::transparent); - painter->fillRect(boundingRect(), gradient); - } - } - } } // We need to dispatch all mouse-related events to the appropriate (mouse grabbing) ChatItem