Mercurial > pidgin.yaz
diff src/dialogs.c @ 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 | 4f3448b3c8f8 |
| children | e0f936b4c91a |
line wrap: on
line diff
--- 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); }
