Mercurial > pidgin
diff src/gtkconv.c @ 9812:d56f24cc4dad
[gaim-migrate @ 10683]
See the changelog. This is a modified patch #1005629.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Sun, 22 Aug 2004 03:06:33 +0000 |
| parents | 4a15962c344a |
| children | 34db8e8b49d8 |
line wrap: on
line diff
--- a/src/gtkconv.c Sun Aug 22 02:13:04 2004 +0000 +++ b/src/gtkconv.c Sun Aug 22 03:06:33 2004 +0000 @@ -2570,11 +2570,13 @@ GaimPluginProtocolInfo *prpl_info = NULL; GdkPixbuf *window_icon = NULL; GtkIMHtmlButtons buttons; + GaimAccount *account; win = gaim_conversation_get_window(conv); gtkwin = GAIM_GTK_WINDOW(win); gtkconv = GAIM_GTK_CONVERSATION(conv); gc = gaim_conversation_get_gc(conv); + account = gaim_connection_get_account(gc); if (gc != NULL) prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); @@ -2610,8 +2612,7 @@ gtk_widget_show(gtkwin->menu.alias); gtk_widget_show(gtkwin->menu.block); - if (gaim_find_buddy(gaim_conversation_get_account(conv), - gaim_conversation_get_name(conv)) == NULL) { + if (gaim_find_buddy(account, gaim_conversation_get_name(conv)) == NULL) { gtk_widget_show(gtkwin->menu.add); gtk_widget_hide(gtkwin->menu.remove); gtk_widget_show(gtkconv->add); @@ -2643,17 +2644,16 @@ gtk_widget_show(gtkwin->menu.alias); gtk_widget_hide(gtkwin->menu.block); - if (gaim_blist_find_chat(gaim_conversation_get_account(conv), - gaim_conversation_get_name(conv)) == NULL) { - /* If the chat is NOT in the buddy list */ + if (gaim_blist_find_chat(account, gaim_conversation_get_name(conv)) == NULL) { + /* If the chat is NOT in the buddy list */ gtk_widget_show(gtkwin->menu.add); gtk_widget_hide(gtkwin->menu.remove); gtk_widget_show(gtkconv->add); gtk_widget_hide(gtkconv->remove); } else { - /* If the chat IS in the buddy list */ + /* If the chat IS in the buddy list */ + gtk_widget_hide(gtkwin->menu.add); gtk_widget_show(gtkwin->menu.remove); - gtk_widget_hide(gtkwin->menu.add); gtk_widget_hide(gtkconv->add); gtk_widget_show(gtkconv->remove); } @@ -2672,33 +2672,29 @@ /* Account is online */ /* Deal with buttons */ - gtk_widget_set_sensitive(gtkconv->add, TRUE); - gtk_widget_set_sensitive(gtkconv->remove, TRUE); gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL)); if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { - gtk_widget_set_sensitive(gtkconv->send, - (prpl_info->send_im != NULL)); - gtk_widget_set_sensitive(gtkconv->u.im->warn, - (prpl_info->warn != NULL)); - gtk_widget_set_sensitive(gtkconv->u.im->block, - (prpl_info->add_deny != NULL)); + gtk_widget_set_sensitive(gtkconv->add, (prpl_info->add_buddy != NULL)); + gtk_widget_set_sensitive(gtkconv->remove, (prpl_info->remove_buddy != NULL)); + gtk_widget_set_sensitive(gtkconv->send, (prpl_info->send_im != NULL)); + gtk_widget_set_sensitive(gtkconv->u.im->warn, (prpl_info->warn != NULL)); + gtk_widget_set_sensitive(gtkconv->u.im->block, (prpl_info->add_deny != NULL)); gtk_widget_set_sensitive(gtkconv->u.im->send_file, - (prpl_info->send_file - && (!prpl_info->can_receive_file - || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); + (prpl_info->send_file && (!prpl_info->can_receive_file || + prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { - gtk_widget_set_sensitive(gtkconv->send, - (prpl_info->chat_send != NULL)); - gtk_widget_set_sensitive(gtkconv->u.chat->invite, - (prpl_info->chat_invite != NULL)); + /* Only allow adding/removing if this is a chat and not a conference */ + gtk_widget_set_sensitive(gtkconv->add, (prpl_info->join_chat != NULL)); + gtk_widget_set_sensitive(gtkconv->remove, (prpl_info->join_chat != NULL)); + gtk_widget_set_sensitive(gtkconv->send, (prpl_info->chat_send != NULL)); + gtk_widget_set_sensitive(gtkconv->u.chat->invite, (prpl_info->chat_invite != NULL)); } /* Deal with the toolbar */ - if (gc->flags & GAIM_CONNECTION_HTML) { buttons = GTK_IMHTML_ALL; /* Everything on */ if (!(prpl_info->options & OPT_PROTO_IM_IMAGE)) @@ -2715,45 +2711,35 @@ buttons = GTK_IMHTML_SMILEY; } gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons); - gtk_imhtmltoolbar_associate_smileys (GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(gaim_conversation_get_account(conv))); + gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(account)); /* Deal with menu items */ gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL)); gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL)); - gtk_widget_set_sensitive(gtkwin->menu.invite, - (prpl_info->chat_invite != NULL)); + gtk_widget_set_sensitive(gtkwin->menu.invite, (prpl_info->chat_invite != NULL)); + gtk_widget_set_sensitive(gtkwin->menu.block, (prpl_info->add_deny != NULL)); + gtk_widget_set_sensitive(gtkwin->menu.insert_link, (gc->flags & GAIM_CONNECTION_HTML)); + gtk_widget_set_sensitive(gtkwin->menu.insert_image, (prpl_info->options & OPT_PROTO_IM_IMAGE)); if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { + gtk_widget_set_sensitive(gtkwin->menu.add, (prpl_info->add_buddy != NULL)); + gtk_widget_set_sensitive(gtkwin->menu.remove, (prpl_info->remove_buddy != NULL)); gtk_widget_set_sensitive(gtkwin->menu.send_file, - (gc && prpl_info->send_file != NULL - && (!prpl_info->can_receive_file - || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); - if (gaim_find_buddy(gaim_conversation_get_account(conv), - gaim_conversation_get_name(conv)) == NULL) - gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); - else - gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); + (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || + prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); + gtk_widget_set_sensitive(gtkwin->menu.alias, + (gaim_find_buddy(account, gaim_conversation_get_name(conv)) != NULL)); } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { - if (gaim_blist_find_chat(gaim_conversation_get_account(conv), - gaim_conversation_get_name(conv)) == NULL) - gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); - else - gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); + gtk_widget_set_sensitive(gtkwin->menu.add, (prpl_info->join_chat != NULL)); + gtk_widget_set_sensitive(gtkwin->menu.remove, (prpl_info->join_chat != NULL)); + gtk_widget_set_sensitive(gtkwin->menu.alias, + (gaim_blist_find_chat(account, gaim_conversation_get_name(conv)) != NULL)); } - - gtk_widget_set_sensitive(gtkwin->menu.block, - (prpl_info->add_deny != NULL)); - gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); - gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); - gtk_widget_set_sensitive(gtkwin->menu.insert_link, - gc->flags & GAIM_CONNECTION_HTML); - gtk_widget_set_sensitive(gtkwin->menu.insert_image, - (prpl_info->options & OPT_PROTO_IM_IMAGE)); } else { /* Account is offline */ - /* Or it's a chat where we left. */ + /* Or it's a chat that we've left. */ /* Deal with buttons */ gtk_widget_set_sensitive(gtkconv->add, FALSE);
