src/gtkblist.c

changeset 9774
220712654b8e
parent 9773
68834782c27a
child 9775
e3a3555b0621
--- 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;

mercurial