diff options
-rw-r--r-- | addressbook/ChangeLog | 9 | ||||
-rw-r--r-- | addressbook/gui/contact-list-editor/e-contact-list-editor.c | 10 |
2 files changed, 18 insertions, 1 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index ac4277aa43..ad2d3d62df 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,12 @@ +2008-07-28 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #544383 + + * gui/contact-list-editor/e-contact-list-editor.c: + (e_contact_list_editor_get_contact): Put list members in reverse order, + because 'e_vcard_add_attribute' uses prepend, thus changes order on + every single save of the contact list. + 2008-07-20 Andre Klapper <a9016009@gmx.de> * addressbook.error.xml: Fix some strings. See bug #543753. diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index d3121185a6..7039bb5086 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -1334,6 +1334,7 @@ e_contact_list_editor_get_contact (EContactListEditor *editor) GtkTreeIter iter; gboolean iter_valid; const gchar *text; + GSList *attrs = NULL, *a; g_return_val_if_fail (E_IS_CONTACT_LIST_EDITOR (editor), NULL); @@ -1367,13 +1368,20 @@ e_contact_list_editor_get_contact (EContactListEditor *editor) gtk_tree_model_get (model, &iter, 0, &dest, -1); attr = e_vcard_attribute_new (NULL, EVC_EMAIL); - e_vcard_add_attribute (E_VCARD (contact), attr); + attrs = g_slist_prepend (attrs, attr); e_destination_export_to_vcard_attribute (dest, attr); g_object_unref (dest); iter_valid = gtk_tree_model_iter_next (model, &iter); } + /* Put it in reverse order because e_vcard_add_attribute also uses prepend, + but we want to keep order of mails there. Hopefully noone will change + the behaviour of the e_vcard_add_attribute. */ + for (a = attrs; a; a = a->next) { + e_vcard_add_attribute (E_VCARD (contact), a->data); + } + return contact; } |