# HG changeset patch # User Eric Warmenhoven # Date 988186658 0 # Node ID 2eec724fdbcd2ab750cd80164a130dc4410cad2a # Parent 0763e0d4adddaa59ff41685212aa384bd1ecb637 [gaim-migrate @ 1758] bugfixes for group rename. committer: Tailor Script diff -r 0763e0d4addd -r 2eec724fdbcd src/buddy.c --- a/src/buddy.c Wed Apr 25 06:32:00 2001 +0000 +++ b/src/buddy.c Wed Apr 25 08:17:38 2001 +0000 @@ -185,6 +185,7 @@ } else { update_num_group(gs); } + update_num_group(new_gs); } else { /* two possible actions: if gs contains things that are only from g, * just rename gs and fix the label. otherwise, move everything in g diff -r 0763e0d4addd -r 2eec724fdbcd src/dialogs.c --- a/src/dialogs.c Wed Apr 25 06:32:00 2001 +0000 +++ b/src/dialogs.c Wed Apr 25 08:17:38 2001 +0000 @@ -3787,15 +3787,25 @@ { char *new_name; struct group *g; + struct group *orig; new_name = gtk_entry_get_text(GTK_ENTRY(entry)); g = gtk_object_get_user_data(obj); if (new_name && (strlen(new_name) != 0) && strcmp(new_name, g->name)) { - char *prevname = g_strdup(g->name); - g_snprintf(g->name, sizeof(g->name), "%s", new_name); - handle_group_rename(g, prevname); - g_free(prevname); + char *prevname; + if ((orig = find_group(g->gc, new_name)) != NULL) { + orig->members = g_slist_concat(orig->members, g->members); + handle_group_rename(orig, g->name); + g->gc->groups = g_slist_remove(g->gc->groups, g); + /* FIXME, i don't like calling this. it's sloppy. */ build_edit_tree(); + g_free(g); + } else { + prevname = g_strdup(g->name); + g_snprintf(g->name, sizeof(g->name), "%s", new_name); + handle_group_rename(g, prevname); + g_free(prevname); + } do_export(0, 0); }