summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@pidgin.im>2008-05-04 03:28:58 +0000
committerSadrul Habib Chowdhury <sadrul@pidgin.im>2008-05-04 03:28:58 +0000
commitbc66669a9dab41c43f060231af35a68d47e25f12 (patch)
tree5be493bb5adefa26755094ac7246ef3b751955dd
parent71f6efab6a5d153d9e8b6751ec95a6749f382ad2 (diff)
downloadpidgin-bc66669a9dab41c43f060231af35a68d47e25f12.tar.gz
When searching for a conversation, search only in the list of the
specified type of conversation (i.e. IMs or Chats), when appropriate, instead of the list of all conversations.
-rw-r--r--libpurple/conversation.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/libpurple/conversation.c b/libpurple/conversation.c
index 7706318d5e..d5cdb7dd57 100644
--- a/libpurple/conversation.c
+++ b/libpurple/conversation.c
@@ -813,14 +813,27 @@ purple_find_conversation_with_account(PurpleConversationType type,
g_return_val_if_fail(name != NULL, NULL);
+ switch (type) {
+ case PURPLE_CONV_TYPE_IM:
+ cnv = purple_get_ims();
+ break;
+ case PURPLE_CONV_TYPE_CHAT:
+ cnv = purple_get_chats();
+ break;
+ case PURPLE_CONV_TYPE_ANY:
+ cnv = purple_get_conversations();
+ break;
+ default:
+ g_return_val_if_reached(NULL);
+ }
+
name1 = g_strdup(purple_normalize(account, name));
- for (cnv = purple_get_conversations(); cnv != NULL; cnv = cnv->next) {
+ for (; cnv != NULL; cnv = cnv->next) {
c = (PurpleConversation *)cnv->data;
name2 = purple_normalize(account, purple_conversation_get_name(c));
- if (((type == PURPLE_CONV_TYPE_ANY) || (type == purple_conversation_get_type(c))) &&
- (account == purple_conversation_get_account(c)) &&
+ if ((account == purple_conversation_get_account(c)) &&
!purple_utf8_strcasecmp(name1, name2)) {
break;