Mercurial > pidgin
diff src/gtkblist.c @ 9774:ec6ff57d7b06
[gaim-migrate @ 10642]
" moves make_buddy_menu to gaim_gtk_blist_make_buddy_menu
and makes it public.
Also, cleaned up a lot of extra pointers we were
passing around. No need to pass the menu, buddy, prpl,
and prplinfo when we can get the prpl and the prplinfo
from the buddy with buddy->account->gc->prpl, and
GAIM_PLUGIN_PROTOCOL_INFO();" --Gary Kramlich
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Wed, 18 Aug 2004 11:46:46 +0000 |
| parents | 09f18996c2ea |
| children | 4c1a1be8ce33 |
line wrap: on
line diff
--- a/src/gtkblist.c Wed Aug 18 04:40:59 2004 +0000 +++ b/src/gtkblist.c Wed Aug 18 11:46:46 2004 +0000 @@ -1123,41 +1123,51 @@ } -static void make_buddy_menu(GtkWidget *menu, GaimPluginProtocolInfo *prpl_info, GaimBuddy *b) -{ +void +gaim_gtk_blist_make_buddy_menu(GtkWidget *menu, GaimBuddy *buddy) { + GaimPluginProtocolInfo *prpl_info; + + g_return_if_fail(menu); + g_return_if_fail(buddy); + + prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl); + if (prpl_info && prpl_info->get_info) { gaim_new_item_from_stock(menu, _("Get _Info"), GAIM_STOCK_INFO, - G_CALLBACK(gtk_blist_menu_info_cb), b, 0, 0, NULL); + G_CALLBACK(gtk_blist_menu_info_cb), buddy, 0, 0, NULL); } gaim_new_item_from_stock(menu, _("I_M"), GAIM_STOCK_IM, - G_CALLBACK(gtk_blist_menu_im_cb), b, 0, 0, NULL); + G_CALLBACK(gtk_blist_menu_im_cb), buddy, 0, 0, NULL); if (prpl_info && prpl_info->send_file) { - if (!prpl_info->can_receive_file - || prpl_info->can_receive_file(b->account->gc, b->name)) { - gaim_new_item_from_stock(menu, _("_Send File"), GAIM_STOCK_FILE_TRANSFER, - G_CALLBACK(gtk_blist_menu_send_file_cb), b, 0, 0, NULL); + if (!prpl_info->can_receive_file || + prpl_info->can_receive_file(buddy->account->gc, buddy->name)) + { + gaim_new_item_from_stock(menu, _("_Send File"), + GAIM_STOCK_FILE_TRANSFER, + G_CALLBACK(gtk_blist_menu_send_file_cb), + buddy, 0, 0, NULL); } } gaim_new_item_from_stock(menu, _("Add Buddy _Pounce"), NULL, - G_CALLBACK(gtk_blist_menu_bp_cb), b, 0, 0, NULL); + G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL); gaim_new_item_from_stock(menu, _("View _Log"), NULL, - G_CALLBACK(gtk_blist_menu_showlog_cb), b, 0, 0, NULL); - - gaim_gtk_append_blist_node_proto_menu(menu, b->account->gc, (GaimBlistNode *) b); - gaim_gtk_append_blist_node_extended_menu(menu, (GaimBlistNode *) b); + G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL); + + gaim_gtk_append_blist_node_proto_menu(menu, buddy->account->gc, + (GaimBlistNode *)buddy); + gaim_gtk_append_blist_node_extended_menu(menu, (GaimBlistNode *)buddy); gaim_separator(menu); gaim_new_item_from_stock(menu, _("_Alias..."), GAIM_STOCK_ALIAS, - G_CALLBACK(gtk_blist_menu_alias_cb), b, 0, 0, NULL); + G_CALLBACK(gtk_blist_menu_alias_cb), buddy, 0, 0, NULL); gaim_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE, - G_CALLBACK(gaim_gtk_blist_remove_cb), b, + G_CALLBACK(gaim_gtk_blist_remove_cb), buddy, 0, 0, NULL); } -static gboolean gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, - gpointer null) -{ +static gboolean +gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, gpointer data) { GaimBlistNode *node; GValue val = { 0, }; GtkTreeIter iter; @@ -1212,11 +1222,7 @@ static GtkWidget * -create_chat_menu (GaimBlistNode *node, - GaimChat *c, - GaimPlugin *prpl, - GaimPluginProtocolInfo *prpl_info) -{ +create_chat_menu(GaimBlistNode *node, GaimChat *c) { GtkWidget *menu; gboolean autojoin; @@ -1262,18 +1268,14 @@ } static GtkWidget * -create_buddy_menu (GaimBlistNode *node, - GaimBuddy *b, - GaimPlugin *prpl, - GaimPluginProtocolInfo *prpl_info) -{ +create_buddy_menu(GaimBlistNode *node, GaimBuddy *b) { struct _gaim_gtk_blist_node *gtknode = (struct _gaim_gtk_blist_node *)node->ui_data; GtkWidget *menu; GtkWidget *menuitem; gboolean show_offline = gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies"); menu = gtk_menu_new(); - make_buddy_menu(menu, prpl_info, b); + gaim_gtk_blist_make_buddy_menu(menu, b); if(GAIM_BLIST_NODE_IS_CONTACT(node)) { gaim_separator(menu); @@ -1320,10 +1322,7 @@ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); gtk_widget_show(submenu); - prpl = gaim_find_prpl(gaim_account_get_protocol_id(buddy->account)); - prpl_info = prpl ? GAIM_PLUGIN_PROTOCOL_INFO(prpl) : NULL; - - make_buddy_menu(submenu, prpl_info, buddy); + gaim_gtk_blist_make_buddy_menu(submenu, buddy); } } } @@ -1346,31 +1345,23 @@ /* Create a menu based on the thing we right-clicked on */ if (GAIM_BLIST_NODE_IS_GROUP(node)) { GaimGroup *g = (GaimGroup *)node; + menu = create_group_menu(node, g); } else if (GAIM_BLIST_NODE_IS_CHAT(node)) { GaimChat *c = (GaimChat *)node; - GaimPlugin *prpl = NULL; - GaimPluginProtocolInfo *prpl_info = NULL; - prpl = gaim_find_prpl(gaim_account_get_protocol_id(c->account)); - if (prpl != NULL) - prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); - menu = create_chat_menu(node, c, prpl, prpl_info); + + menu = create_chat_menu(node, c); } else if ((GAIM_BLIST_NODE_IS_CONTACT(node)) && (gtknode->contact_expanded)) { menu = create_contact_menu(node); } else if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_BUDDY(node)) { GaimBuddy *b; - GaimPlugin *prpl = NULL; - GaimPluginProtocolInfo *prpl_info = NULL; if (GAIM_BLIST_NODE_IS_CONTACT(node)) b = gaim_contact_get_priority_buddy((GaimContact*)node); else b = (GaimBuddy *)node; - prpl = gaim_find_prpl(gaim_account_get_protocol_id(b->account)); - if (prpl != NULL) - prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); - menu = create_buddy_menu(node, b, prpl, prpl_info); + menu = create_buddy_menu(node, b); } /* Now display the menu */ @@ -2973,6 +2964,7 @@ /********************************************************************************** * Public API Functions * **********************************************************************************/ + static void gaim_gtk_blist_new_list(GaimBuddyList *blist) { GaimGtkBuddyList *gtkblist;
