diff pidgin/gtkconv.c @ 23189:7e0b815d2133

merge of '45401c961ca97b6dd3675db39ca8d46f5142dada' and '886c30a3d3006c7497f9e6ce6354ba660e5505bd'
author Richard Laager <rlaager@wiktel.com>
date Sun, 25 May 2008 22:06:51 +0000
parents 89713caa9ade
children d54bc04bfd31
line wrap: on
line diff
--- a/pidgin/gtkconv.c	Sun May 25 21:56:36 2008 +0000
+++ b/pidgin/gtkconv.c	Sun May 25 22:06:51 2008 +0000
@@ -3153,10 +3153,18 @@
 
 		if ((chat == NULL) && (gtkconv->imhtml != NULL)) {
 			GHashTable *components;
-			components = g_hash_table_new_full(g_str_hash, g_str_equal,
-					g_free, g_free);
-			g_hash_table_replace(components, g_strdup("channel"),
-					g_strdup(conv->name));
+			PurpleAccount *account = purple_conversation_get_account(conv);
+			PurplePlugin *prpl = purple_find_prpl(purple_account_get_protocol_id(account));
+			PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+			if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, chat_info_defaults)) {
+				components = prpl_info->chat_info_defaults(purple_account_get_connection(account),
+						purple_conversation_get_name(conv));
+			} else {
+				components = g_hash_table_new_full(g_str_hash, g_str_equal,
+						g_free, g_free);
+				g_hash_table_replace(components, g_strdup("channel"),
+						g_strdup(purple_conversation_get_name(conv)));
+			}
 			chat = purple_chat_new(conv->account, NULL, components);
 			purple_blist_node_set_flags((PurpleBlistNode *)chat,
 					PURPLE_BLIST_NODE_FLAG_NO_SAVE);