Mercurial > pidgin
changeset 1748:2eec724fdbcd
[gaim-migrate @ 1758]
bugfixes for group rename.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 25 Apr 2001 08:17:38 +0000 |
parents | 0763e0d4addd |
children | 5bfc58c20e82 |
files | src/buddy.c src/dialogs.c |
diffstat | 2 files changed, 15 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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); }