From: Marcus Eggenberger Date: Sun, 28 Jun 2009 15:11:00 +0000 (+0200) Subject: Fixes #691 - missing messages when using unread message requester X-Git-Tag: 0.5-rc1~171 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=6411b0f9a71708b58c8d5ba00bf59d1062267470;ds=inline Fixes #691 - missing messages when using unread message requester --- diff --git a/src/core/corebacklogmanager.cpp b/src/core/corebacklogmanager.cpp index d9f3d908..39feb2ab 100644 --- a/src/core/corebacklogmanager.cpp +++ b/src/core/corebacklogmanager.cpp @@ -43,23 +43,30 @@ QVariantList CoreBacklogManager::requestBacklog(BufferId bufferId, MsgId first, } if(additional) { + MsgId oldestMessage; + if(!msgList.isEmpty()) { + if(msgList.first().msgId() < msgList.last().msgId()) + oldestMessage = msgList.first().msgId(); + else + oldestMessage = msgList.last().msgId(); + } + if(first != -1) { last = first; } else { - last = -1; - if(!msgList.isEmpty()) { - if(msgList.first().msgId() < msgList.last().msgId()) - last = msgList.first().msgId(); - else - last = msgList.last().msgId(); - } + last = oldestMessage; } - msgList = Core::requestMsgs(coreSession()->user(), bufferId, -1, last, additional); - msgIter = msgList.constBegin(); - msgListEnd = msgList.constEnd(); - while(msgIter != msgListEnd) { - backlog << qVariantFromValue(*msgIter); - msgIter++; + + // only fetch additional messages if they they continue seemlessly + // that is, if the list of messages is not truncated by the limit + if(last.isValid() && last == oldestMessage) { + msgList = Core::requestMsgs(coreSession()->user(), bufferId, -1, last, additional); + msgIter = msgList.constBegin(); + msgListEnd = msgList.constEnd(); + while(msgIter != msgListEnd) { + backlog << qVariantFromValue(*msgIter); + msgIter++; + } } }