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;