From: Jim S. <jse...@us...> - 2002-06-15 20:21:03
|
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)(); |