Fixes NB#127780, addressbook dialogs are unnecessarily system modal
[modest] / src / maemo / modest-address-book.c
index a34123b..c6a3d76 100644 (file)
@@ -131,7 +131,8 @@ open_addressbook_sync ()
 }
 
 void
-modest_address_book_add_address (const gchar *address)
+modest_address_book_add_address (const gchar *address,
+                                GtkWindow *parent)
 {
        OssoABookAccount *account = NULL;
        GtkWidget *dialog = NULL;
@@ -147,13 +148,18 @@ modest_address_book_add_address (const gchar *address)
        }
 
        email_address = modest_text_utils_get_email_address (address);
-       
+
        account = osso_abook_account_get (EVC_EMAIL, NULL, email_address);
        g_free (email_address);
        if (account)
        {
                dialog = osso_abook_add_to_contacts_dialog_new (contact_model, account);
                g_object_unref (account);
+
+               modest_window_mgr_set_modal (modest_runtime_get_window_mgr(),
+                                            (GtkWindow *) parent,
+                                            (GtkWindow *) dialog);
+
                gtk_dialog_run (GTK_DIALOG (dialog));
 
                if (contact_model) {
@@ -817,10 +823,11 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor,
                /* so, it seems a valid address */
                /* note: adding it the to the addressbook if it did not exist yet,
                 * and adding it to the recent_list */
-               if (result && store_address)
-                       add_to_address_book (address);
+               if (result && address_list && store_address)
+                       *address_list = g_slist_prepend (*address_list, address);
+               else
+                       g_free (address);
 
-               g_free (address);
                if (result == FALSE)
                        break;
 
@@ -828,6 +835,10 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor,
                current_end = g_slist_next (current_end);
        }
 
+       /* Remove dup's */
+       if (address_list && *address_list)
+               *address_list = modest_text_utils_remove_duplicate_addresses_list (*address_list);
+
        if (current_start == NULL) {
                gtk_text_buffer_get_end_iter (buffer, &end_iter);
                gtk_text_buffer_place_cursor (buffer, &end_iter);