Update of /cvsroot/gaim/gaim/src
In directory usw-pr-cvs1:/tmp/cvs-serv3118/src
Modified Files:
buddy.c prpl.h
Log Message:
Added capability for protocol-specific "edit buddy menu" items.
Index: buddy.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/buddy.c,v
retrieving revision 1.316
retrieving revision 1.317
diff -u -d -r1.316 -r1.317
--- buddy.c 29 May 2002 01:23:37 -0000 1.316
+++ buddy.c 15 Jun 2002 20:21:01 -0000 1.317
@@ -789,6 +789,7 @@
int row, column;
static GtkWidget *menu = NULL;
GtkWidget *button;
+ static GList *mo_top = NULL;
if (event->button != 3 || event->type != GDK_BUTTON_PRESS)
return FALSE;
@@ -806,6 +807,11 @@
if(menu) {
gtk_widget_destroy(menu);
menu = NULL; /* safety measure */
+ if(mo_top) {
+ g_list_foreach(mo_top, (GFunc)g_free, NULL);
+ g_list_free(mo_top);
+ mo_top = NULL;
+ }
}
if (*type == EDIT_GROUP) {
@@ -860,6 +866,27 @@
GTK_SIGNAL_FUNC(pressed_log), b->name);
gtk_menu_append(GTK_MENU(menu), button);
gtk_widget_show(button);
+
+ /*
+ * Add protocol-specific edit buddy menu items if they exist
+ */
+ if (b->gc->prpl->edit_buddy_menu) {
+ GList *mo = mo_top = b->gc->prpl->edit_buddy_menu(b->gc, b->name);
+
+ while (mo) {
+ struct proto_buddy_menu *pbm = mo->data;
+ GtkWidget *button;
+
+ button = gtk_menu_item_new_with_label(pbm->label);
+ gtk_signal_connect(GTK_OBJECT(button), "activate",
+ GTK_SIGNAL_FUNC(menu_click), b->name);
+ gtk_object_set_user_data(GTK_OBJECT(button), mo);
+ gtk_menu_append(GTK_MENU(menu), button);
+ gtk_widget_show(button);
+
+ mo = mo->next;
+ }
+ }
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event->button, event->time);
Index: prpl.h
===================================================================
RCS file: /cvsroot/gaim/gaim/src/prpl.h,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -d -r1.65 -r1.66
--- prpl.h 12 Apr 2002 02:15:24 -0000 1.65
+++ prpl.h 15 Jun 2002 20:21:01 -0000 1.66
@@ -99,6 +99,7 @@
/* user_opts returns a GList* of g_malloc'd struct proto_user_opts */
GList *(* user_opts)();
GList *(* buddy_menu)(struct gaim_connection *, char *);
+ GList *(* edit_buddy_menu)(struct gaim_connection *, char *);
GList *(* chat_info)(struct gaim_connection *);
GSList *(* smiley_list)();
|