comparison finch/gntblist.c @ 23279:a601807bae2b

Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for reporting the bug.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Wed, 04 Jun 2008 22:49:23 +0000
parents 04e0d8677b9a
children 5f9793c8510a
comparison
equal deleted inserted replaced
23278:d14289aed8ee 23279:a601807bae2b
2720 PurpleAccount *account; 2720 PurpleAccount *account;
2721 const char *name; 2721 const char *name;
2722 PurpleConnection *gc; 2722 PurpleConnection *gc;
2723 PurpleChat *chat; 2723 PurpleChat *chat;
2724 GHashTable *hash = NULL; 2724 GHashTable *hash = NULL;
2725 PurpleConversation *conv;
2725 2726
2726 account = purple_request_fields_get_account(fields, "account"); 2727 account = purple_request_fields_get_account(fields, "account");
2727 name = purple_request_fields_get_string(fields, "chat"); 2728 name = purple_request_fields_get_string(fields, "chat");
2728 2729
2729 if (!purple_account_is_connected(account)) 2730 if (!purple_account_is_connected(account))
2730 return; 2731 return;
2731 2732
2732 gc = purple_account_get_connection(account); 2733 gc = purple_account_get_connection(account);
2733 purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name); 2734 /* Create a new conversation now. This will give focus to the new window.
2735 * But it's necessary to pretend that we left the chat, because otherwise
2736 * a new conversation window will pop up when we finally join the chat. */
2737 if (!(conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, account))) {
2738 conv = purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name);
2739 purple_conv_chat_left(PURPLE_CONV_CHAT(conv));
2740 } else {
2741 purple_conversation_present(conv);
2742 }
2743
2734 chat = purple_blist_find_chat(account, name); 2744 chat = purple_blist_find_chat(account, name);
2735 if (chat == NULL) { 2745 if (chat == NULL) {
2736 PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); 2746 PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
2737 if (info->chat_info_defaults != NULL) 2747 if (info->chat_info_defaults != NULL)
2738 hash = info->chat_info_defaults(gc, name); 2748 hash = info->chat_info_defaults(gc, name);