Index: kadu-core/pending_msgs.cpp =================================================================== --- kadu-core/pending_msgs.cpp (wersja 5071) +++ kadu-core/pending_msgs.cpp (kopia robocza) @@ -43,7 +43,7 @@ // return pendingMsgs(); CONST_FOREACH(msg, msgs) - if((*msg).users[0] == user) + if ((*msg).users[0] == user) { // kdebugf2(); return true; @@ -52,6 +52,19 @@ return false; } +unsigned int PendingMsgs::pendingMsgsCount(UserListElements users) const +{ + kdebugf(); + + unsigned int count = 0; + + CONST_FOREACH(msg, msgs) + if ((*msg).users.equals(users)) + count++; + + return count; +} + bool PendingMsgs::pendingMsgs() const { return !msgs.isEmpty(); Index: kadu-core/pending_msgs.h =================================================================== --- kadu-core/pending_msgs.h (wersja 5071) +++ kadu-core/pending_msgs.h (kopia robocza) @@ -54,6 +54,8 @@ **/ bool pendingMsgs(UserListElement user) const; + unsigned int pendingMsgsCount(UserListElements users) const; + /** \fn bool pendingMsgs() const Sprawdza, czy w jakiejkolwiek kolejce są oczekujące wiadomości. Index: kadu-core/chat_manager.cpp =================================================================== --- kadu-core/chat_manager.cpp (wersja 5071) +++ kadu-core/chat_manager.cpp (kopia robocza) @@ -628,6 +628,8 @@ QValueList messages; PendingMsgs::Element elem; + int chat = openChatWidget(gadu, users, forceActivate); + for (int i = 0; i < pending.count(); ++i) { elem = pending[i]; @@ -644,13 +646,10 @@ if (messages.size()) { // TODO: Lame API - int i = openChatWidget(gadu, users, forceActivate); - if (ChatWidgets[i]->countMessages() == 0) - ChatWidgets[i]->appendMessages(messages); + if (!ChatWidgets[chat]->countMessages()) + ChatWidgets[chat]->appendMessages(messages, true); UserBox::refreshAllLater(); } - else - openChatWidget(gadu, users, forceActivate); kdebugf2(); }