X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatview.cpp;h=cc5009b9f9675ea6a1fb25bf66e7509760e4772f;hp=e61dc9e8888bc5b684b3491a2be254a0994dbac9;hb=56288a13972bf8466b57c9d5d1ec382fc7e287cc;hpb=77176474b628e801ba94d9d50d0d961a12aa01c4 diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index e61dc9e8..cc5009b9 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -55,8 +55,6 @@ void ChatView::init(MessageFilter *filter) { _bufferContainer = 0; _currentScaleFactor = 1; _invalidateFilter = false; - _markerLineVisible = true; - _markedLine = 0; setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); @@ -243,7 +241,7 @@ QList ChatView::visibleChatLinesSorted(Qt::ItemSelectionMode mode) c return result; } -ChatLine *ChatView::lastVisibleChatLine() const { +ChatLine *ChatView::lastVisibleChatLine(bool ignoreDayChange) const { if(!scene()) return 0; @@ -255,7 +253,7 @@ ChatLine *ChatView::lastVisibleChatLine() const { QSet visibleLines = visibleChatLines(Qt::ContainsItemBoundingRect); foreach(ChatLine *line, visibleLines) { - if(line->row() > row) + if(line->row() > row && (ignoreDayChange? line->msgType() != Message::DayChange : true)) row = line->row(); } @@ -266,42 +264,27 @@ ChatLine *ChatView::lastVisibleChatLine() const { } void ChatView::setMarkerLineVisible(bool visible) { - if(visible != _markerLineVisible) { - _markerLineVisible = visible; - } + scene()->setMarkerLineVisible(visible); } -void ChatView::setMarkedLine(ChatLine *line) { - if(_markedLine == line) - return; - +void ChatView::setMarkerLine(MsgId msgId) { if(!scene()->isSingleBufferScene()) return; - if(line) { - BufferId bufId = scene()->singleBufferId(); - Client::setMarkerLine(bufId, line->msgId()); - } + BufferId bufId = scene()->singleBufferId(); + Client::setMarkerLine(bufId, msgId); } -void ChatView::markerLineSet(BufferId buffer, MsgId msg) { +void ChatView::markerLineSet(BufferId buffer, MsgId msgId) { if(!scene()->isSingleBufferScene() || scene()->singleBufferId() != buffer) return; - ChatLine *newLine = scene()->chatLine(msg); - if(_markedLine == newLine) - return; - - ChatLine *oldLine = _markedLine; - _markedLine = newLine; - - if(oldLine) - oldLine->update(); + scene()->setMarkerLine(msgId); + scene()->setMarkerLineVisible(true); +} - if(newLine) { - setMarkerLineVisible(true); - newLine->update(); - } +void ChatView::jumpToMarkerLine(bool requestBacklog) { + scene()->jumpToMarkerLine(requestBacklog); } void ChatView::addActionsToMenu(QMenu *menu, const QPointF &pos) {