| 2146 |
2158 |
| 2147 purple_signal_emit(pidgin_conversations_get_handle(), "conversation-switched", conv); |
2159 purple_signal_emit(pidgin_conversations_get_handle(), "conversation-switched", conv); |
| 2148 |
2160 |
| 2149 gray_stuff_out(gtkconv); |
2161 gray_stuff_out(gtkconv); |
| 2150 update_typing_icon(gtkconv); |
2162 update_typing_icon(gtkconv); |
| |
2163 g_object_set_data(G_OBJECT(entry), "transient_buddy", NULL); |
| |
2164 regenerate_options_items(gtkconv->win); |
| 2151 |
2165 |
| 2152 gtk_window_set_title(GTK_WINDOW(gtkconv->win->window), |
2166 gtk_window_set_title(GTK_WINDOW(gtkconv->win->window), |
| 2153 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
2167 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
| 2154 } |
2168 } |
| 2155 |
2169 |
| 2892 gtkconv = pidgin_conv_window_get_active_gtkconv(win); |
2906 gtkconv = pidgin_conv_window_get_active_gtkconv(win); |
| 2893 conv = gtkconv->active_conv; |
2907 conv = gtkconv->active_conv; |
| 2894 |
2908 |
| 2895 menu = gtk_item_factory_get_widget(win->menu.item_factory, N_("/Conversation/More")); |
2909 menu = gtk_item_factory_get_widget(win->menu.item_factory, N_("/Conversation/More")); |
| 2896 |
2910 |
| 2897 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) |
2911 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) { |
| 2898 chat = purple_blist_find_chat(conv->account, conv->name); |
2912 chat = purple_blist_find_chat(conv->account, conv->name); |
| 2899 else |
2913 |
| |
2914 if ((chat == NULL) && (gtkconv->imhtml != NULL)) { |
| |
2915 chat = g_object_get_data(G_OBJECT(gtkconv->imhtml), "transient_chat"); |
| |
2916 } |
| |
2917 |
| |
2918 if ((chat == NULL) && (gtkconv->imhtml != NULL)) { |
| |
2919 GHashTable *components; |
| |
2920 components = g_hash_table_new_full(g_str_hash, g_str_equal, |
| |
2921 g_free, g_free); |
| |
2922 g_hash_table_replace(components, g_strdup("channel"), |
| |
2923 g_strdup(conv->name)); |
| |
2924 chat = purple_chat_new(conv->account, NULL, components); |
| |
2925 purple_blist_node_set_flags((PurpleBlistNode *)chat, |
| |
2926 PURPLE_BLIST_NODE_FLAG_NO_SAVE); |
| |
2927 g_object_set_data_full(G_OBJECT(gtkconv->imhtml), "transient_chat", |
| |
2928 chat, (GDestroyNotify)purple_blist_remove_chat); |
| |
2929 } |
| |
2930 } else { |
| 2900 buddy = purple_find_buddy(conv->account, conv->name); |
2931 buddy = purple_find_buddy(conv->account, conv->name); |
| |
2932 |
| |
2933 /* gotta remain bug-compatible :( libpurple < 2.0.2 didn't handle |
| |
2934 * removing "isolated" buddy nodes well */ |
| |
2935 if (purple_version_check(2, 0, 2) == NULL) { |
| |
2936 if ((buddy == NULL) && (gtkconv->imhtml != NULL)) { |
| |
2937 buddy = g_object_get_data(G_OBJECT(gtkconv->imhtml), "transient_buddy"); |
| |
2938 } |
| |
2939 |
| |
2940 if ((buddy == NULL) && (gtkconv->imhtml != NULL)) { |
| |
2941 buddy = purple_buddy_new(conv->account, conv->name, NULL); |
| |
2942 purple_blist_node_set_flags((PurpleBlistNode *)buddy, |
| |
2943 PURPLE_BLIST_NODE_FLAG_NO_SAVE); |
| |
2944 g_object_set_data_full(G_OBJECT(gtkconv->imhtml), "transient_buddy", |
| |
2945 buddy, (GDestroyNotify)purple_blist_remove_buddy); |
| |
2946 } |
| |
2947 } |
| |
2948 } |
| 2901 |
2949 |
| 2902 if (chat) |
2950 if (chat) |
| 2903 node = (PurpleBlistNode *)chat; |
2951 node = (PurpleBlistNode *)chat; |
| 2904 else if (buddy) |
2952 else if (buddy) |
| 2905 node = (PurpleBlistNode *)buddy; |
2953 node = (PurpleBlistNode *)buddy; |
| 4228 G_CALLBACK(topic_callback), gtkconv); |
4276 G_CALLBACK(topic_callback), gtkconv); |
| 4229 } |
4277 } |
| 4230 |
4278 |
| 4231 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0); |
4279 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0); |
| 4232 gtk_widget_show(gtkchat->topic_text); |
4280 gtk_widget_show(gtkchat->topic_text); |
| |
4281 g_signal_connect(G_OBJECT(gtkchat->topic_text), "key_press_event", |
| |
4282 G_CALLBACK(entry_key_press_cb), gtkconv); |
| 4233 } |
4283 } |
| 4234 } |
4284 } |
| 4235 |
4285 |
| 4236 static void |
4286 static void |
| 4237 setup_chat_userlist(PidginConversation *gtkconv, GtkWidget *hpaned) |
4287 setup_chat_userlist(PidginConversation *gtkconv, GtkWidget *hpaned) |