diff options
| author | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2014-04-22 16:43:53 +0000 |
|---|---|---|
| committer | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2014-04-22 16:43:53 +0000 |
| commit | 12c7e7b30b2cce60884e61144449e14cca9ecb4d (patch) | |
| tree | 99174cbd16b617f18488e545fde9bb1db0571224 /pica-client | |
| parent | 72076cbe42730602b02afed5032d1be41d5eb36c (diff) | |
| download | pica-pica-12c7e7b30b2cce60884e61144449e14cca9ecb4d.tar.gz pica-pica-12c7e7b30b2cce60884e61144449e14cca9ecb4d.zip | |
bugfix - crash caused by empty undelivered_msgs list when message is delivered after creating new chatwindow
git-svn-id: svn://localhost/project_picapica/trunk@305 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'pica-client')
| -rw-r--r-- | pica-client/chatwindow.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/pica-client/chatwindow.cpp b/pica-client/chatwindow.cpp index a746561..9d52ee9 100644 --- a/pica-client/chatwindow.cpp +++ b/pica-client/chatwindow.cpp @@ -219,11 +219,27 @@ void ChatWindow::msg_from_peer(QString msg) void ChatWindow::msg_delivered() { - QTextCursor c(chatw->document()); - c.setPosition(undelivered_msgs.first()); - c.deleteChar(); - c.insertText("+"); - undelivered_msgs.removeFirst(); + if (undelivered_msgs.isEmpty()) + { + // undelivered_msgs can be empty if new chatwindow instance was created + // and undelivered message from previous chat session is delivered + // after that. + + QByteArray my_id = Accounts::GetCurrentAccount().id; + QMap<QByteArray, QList<QString> > undl = hist.GetUndeliveredMessages(); + + if (!undl[my_id].isEmpty()) + put_message(undl[my_id].first(), my_id , true); + } + + if (!undelivered_msgs.isEmpty()) + { + QTextCursor c(chatw->document()); + c.setPosition(undelivered_msgs.first()); + c.deleteChar(); + c.insertText("+"); + undelivered_msgs.removeFirst(); + } hist.SetDelivered(peer_id_); } |
