From: Eric W. <war...@us...> - 2001-11-06 23:58:54
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv20708/src Modified Files: buddy.c conversation.c dialogs.c gaim.h list.c prpl.h server.c Log Message: don't ask. Index: buddy.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/buddy.c,v retrieving revision 1.269 retrieving revision 1.270 diff -u -d -r1.269 -r1.270 --- buddy.c 2001/11/04 07:42:28 1.269 +++ buddy.c 2001/11/06 23:58:21 1.270 @@ -999,6 +999,7 @@ * we change the group that the buddy is in */ struct group *old_g, *new_g = (struct group *)ptype; struct buddy *s = NULL, *buddy = (struct buddy *)ctype; + gboolean add = FALSE; int pos; if (buddy->gc != new_g->gc) { @@ -1015,7 +1016,7 @@ og->members = g_slist_remove(og->members, a); } else { /* we don't have this buddy yet; let's add him */ - serv_add_buddy(new_g->gc, buddy->name); + add = TRUE; } } @@ -1035,6 +1036,10 @@ } else new_g->members = g_slist_append(new_g->members, buddy); + /* we do the add after it's added locally so that prpls can find it if necessary */ + if (add) + serv_add_buddy(new_g->gc, buddy->name); + do_export(buddy->gc); if (buddy->gc != new_g->gc) { do_export(new_g->gc); @@ -1245,7 +1250,7 @@ b = (struct buddy *)type; g = find_group_by_buddy(b->gc, b->name); gct = b->gc; - serv_remove_buddy(b->gc, b->name); + serv_remove_buddy(b->gc, b->name, g->name); remove_buddy(b->gc, g, b); gtk_ctree_remove_node(GTK_CTREE(edittree), node); do_export(gct); Index: conversation.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/conversation.c,v retrieving revision 1.289 retrieving revision 1.290 diff -u -d -r1.289 -r1.290 --- conversation.c 2001/11/02 01:41:37 1.289 +++ conversation.c 2001/11/06 23:58:21 1.290 @@ -538,17 +538,17 @@ void add_callback(GtkWidget *widget, struct conversation *c) { - if (c->gc && find_buddy(c->gc, c->name) != NULL) { + struct buddy *b = find_buddy(c->gc, c->name); + if (b) { + struct group *g = find_group_by_buddy(c->gc, c->name); debug_printf(_("Removing '%s' from buddylist.\n"), c->name); - serv_remove_buddy(c->gc, c->name); - remove_buddy(c->gc, find_group_by_buddy(c->gc, c->name), find_buddy(c->gc, c->name)); + serv_remove_buddy(c->gc, c->name, g->name); + remove_buddy(c->gc, g, b); do_export(c->gc); build_edit_tree(); update_convo_add_button(c); - } else { - if (c->gc) - show_add_buddy(c->gc, c->name, NULL, NULL); - } + } else if (c->gc) + show_add_buddy(c->gc, c->name, NULL, NULL); gtk_widget_grab_focus(c->entry); } Index: dialogs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/dialogs.c,v retrieving revision 1.281 retrieving revision 1.282 diff -u -d -r1.281 -r1.282 --- dialogs.c 2001/11/06 04:40:21 1.281 +++ dialogs.c 2001/11/06 23:58:21 1.282 @@ -3767,13 +3767,32 @@ { char *new_name; struct buddy *b; + GSList *gr; new_name = gtk_entry_get_text(GTK_ENTRY(entry)); b = gtk_object_get_user_data(obj); + if (!g_slist_find(connections, b->gc)) { + destroy_dialog(rename_bud_dialog, rename_bud_dialog); + return; + } + + gr = b->gc->groups; + while (gr) { + if (g_slist_find(((struct group *)gr->data)->members, b)) + break; + gr = gr->next; + } + if (!gr) { + destroy_dialog(rename_bud_dialog, rename_bud_dialog); + return; + } + if (new_name && (strlen(new_name) != 0) && strcmp(new_name, b->name)) { + struct group *g = find_group_by_buddy(b->gc, b->name); char *prevname = g_strdup(b->name); - serv_remove_buddy(b->gc, b->name); + if (g) + serv_remove_buddy(b->gc, b->name, g->name); if (!strcmp(b->name, b->show)) g_snprintf(b->show, sizeof(b->show), "%s", new_name); g_snprintf(b->name, sizeof(b->name), "%s", new_name); Index: gaim.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/gaim.h,v retrieving revision 1.289 retrieving revision 1.290 diff -u -d -r1.289 -r1.290 --- gaim.h 2001/10/25 05:05:04 1.289 +++ gaim.h 2001/11/06 23:58:21 1.290 @@ -362,8 +362,8 @@ extern void serv_change_passwd(struct gaim_connection *, char *, char *); extern void serv_add_buddy(struct gaim_connection *, char *); extern void serv_add_buddies(struct gaim_connection *, GList *); -extern void serv_remove_buddy(struct gaim_connection *, char *); -extern void serv_remove_buddies(struct gaim_connection *, GList *); +extern void serv_remove_buddy(struct gaim_connection *, char *, char *); +extern void serv_remove_buddies(struct gaim_connection *, GList *, char *); extern void serv_add_permit(struct gaim_connection *, char *); extern void serv_add_deny(struct gaim_connection *, char *); extern void serv_rem_permit(struct gaim_connection *, char *); Index: list.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/list.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- list.c 2001/11/02 01:41:37 1.8 +++ list.c 2001/11/06 23:58:21 1.9 @@ -86,7 +86,7 @@ gc->groups = g_slist_remove(gc->groups, delg); - serv_remove_buddies(gc, tmp); + serv_remove_buddies(gc, tmp, rem_g->name); while (tmp) { g_free(tmp->data); tmp = g_list_remove(tmp, tmp->data); Index: prpl.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/prpl.h,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- prpl.h 2001/10/25 09:19:25 1.54 +++ prpl.h 2001/11/06 23:58:21 1.55 @@ -127,8 +127,8 @@ void (* change_passwd) (struct gaim_connection *, char *old, char *new); void (* add_buddy) (struct gaim_connection *, char *name); void (* add_buddies) (struct gaim_connection *, GList *buddies); - void (* remove_buddy) (struct gaim_connection *, char *name); - void (* remove_buddies) (struct gaim_connection *, GList *buddies); + void (* remove_buddy) (struct gaim_connection *, char *name, char *group); + void (* remove_buddies) (struct gaim_connection *, GList *buddies, char *group); void (* add_permit) (struct gaim_connection *, char *name); void (* add_deny) (struct gaim_connection *, char *name); void (* rem_permit) (struct gaim_connection *, char *name); Index: server.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/server.c,v retrieving revision 1.206 retrieving revision 1.207 diff -u -d -r1.206 -r1.207 --- server.c 2001/11/02 01:41:37 1.206 +++ server.c 2001/11/06 23:58:21 1.207 @@ -250,23 +250,23 @@ } -void serv_remove_buddy(struct gaim_connection *g, char *name) +void serv_remove_buddy(struct gaim_connection *g, char *name, char *group) { if (g && g_slist_find(connections, g) && g->prpl && g->prpl->remove_buddy) - g->prpl->remove_buddy(g, name); + g->prpl->remove_buddy(g, name, group); } -void serv_remove_buddies(struct gaim_connection *gc, GList *g) +void serv_remove_buddies(struct gaim_connection *gc, GList *g, char *group) { if (!g_slist_find(connections, gc)) return; if (!gc->prpl) return; /* how the hell did that happen? */ if (gc->prpl->remove_buddies) - gc->prpl->remove_buddies(gc, g); + gc->prpl->remove_buddies(gc, g, group); else { while (g) { - serv_remove_buddy(gc, g->data); + serv_remove_buddy(gc, g->data, group); g = g->next; } } |