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:
return 0;
}
+void ChatLine::clearCache() {
+ _timestampItem.clearCache();
+ _senderItem.clearCache();
+ _contentsItem.clearCache();
+}
+
void ChatLine::setMouseGrabberItem(ChatItem *item) {
_mouseGrabberItem = item;
}
MsgId myMsgId = myIdx.data(MessageModel::MsgIdRole).value<MsgId>();
Message::Flags flags = (Message::Flags)myIdx.data(MessageModel::FlagsRole).toInt();
- // don't show the marker if we wrote that new line
- if(!(flags & Message::Self)) {
+ if(chatView()->isMarkerLineVisible()) {
BufferId bufferId = BufferId(chatScene()->idString().toInt());
MsgId lastSeenMsgId = Client::networkModel()->markerLineMsgId(bufferId);
if(lastSeenMsgId < myMsgId && lastSeenMsgId >= prevMsgId) {
void ChatLine::hoverEnterEvent(QGraphicsSceneHoverEvent *event) {
ChatItem *item = mouseEventTargetItem(event->pos());
- if(item) {
- Q_ASSERT(!_hoverItem);
+ if(item && !_hoverItem) {
_hoverItem = item;
item->hoverEnterEvent(event);
}
}
void ChatLine::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) {
- Q_ASSERT(_hoverItem);
- _hoverItem->hoverLeaveEvent(event);
- _hoverItem = 0;
+ if(_hoverItem) {
+ _hoverItem->hoverLeaveEvent(event);
+ _hoverItem = 0;
+ }
}
void ChatLine::hoverMoveEvent(QGraphicsSceneHoverEvent *event) {