[evolution-data-server] Bug #486553 - Inline expansion of email lists are not separated by commas
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug #486553 - Inline expansion of email lists are not separated by commas
- Date: Mon, 15 Nov 2010 12:30:36 +0000 (UTC)
commit 315779dc18ee5d4e7dc4d66a30903f327a2be386
Author: Milan Crha <mcrha redhat com>
Date: Mon Nov 15 13:29:57 2010 +0100
Bug #486553 - Inline expansion of email lists are not separated by commas
libedataserverui/e-name-selector-entry.c | 41 +++++++++++++++++++++--------
1 files changed, 29 insertions(+), 12 deletions(-)
---
diff --git a/libedataserverui/e-name-selector-entry.c b/libedataserverui/e-name-selector-entry.c
index ead543a..6cd7676 100644
--- a/libedataserverui/e-name-selector-entry.c
+++ b/libedataserverui/e-name-selector-entry.c
@@ -2338,30 +2338,47 @@ editor_closed_cb (GtkWidget *editor, gpointer data)
static void
popup_activate_inline_expand (ENameSelectorEntry *name_selector_entry, GtkWidget *menu_item)
{
- const gchar *email_list, *text;
- gchar *sanitized_text;
+ const gchar *text;
+ GString *sanitized_text = g_string_new ("");
EDestination *destination = name_selector_entry->priv->popup_destination;
gint position, start, end;
+ const GList *dests;
position = GPOINTER_TO_INT(g_object_get_data ((GObject *)name_selector_entry, "index"));
- email_list = e_destination_get_address (destination);
- text = gtk_entry_get_text (GTK_ENTRY (name_selector_entry));
- get_range_at_position (text, position, &start, &end);
+ for (dests = e_destination_list_get_dests (destination); dests; dests = dests->next) {
+ const EDestination *dest = dests->data;
+ gchar *sanitized;
- g_signal_handlers_block_by_func (name_selector_entry, user_delete_text, name_selector_entry);
+ if (!dest)
+ continue;
- gtk_editable_delete_text (GTK_EDITABLE (name_selector_entry), start, end);
+ text = e_destination_get_address (dest);
+ if (!text || !*text)
+ continue;
- sanitized_text = sanitize_string (email_list);
- gtk_editable_insert_text (GTK_EDITABLE (name_selector_entry), sanitized_text, -1, &start);
- g_free (sanitized_text);
+ sanitized = sanitize_string (text);
+ if (!sanitized)
+ continue;
- g_signal_handlers_unblock_by_func (name_selector_entry, user_delete_text, name_selector_entry);
+ if (*sanitized) {
+ if (*sanitized_text->str)
+ g_string_append (sanitized_text, ", ");
+
+ g_string_append (sanitized_text, sanitized);
+ }
+
+ g_free (sanitized);
+ }
+
+ text = gtk_entry_get_text (GTK_ENTRY (name_selector_entry));
+ get_range_at_position (text, position, &start, &end);
+ gtk_editable_delete_text (GTK_EDITABLE (name_selector_entry), start, end);
+ gtk_editable_insert_text (GTK_EDITABLE (name_selector_entry), sanitized_text->str, -1, &start);
+ g_string_free (sanitized_text, TRUE);
clear_completion_model (name_selector_entry);
generate_attribute_list (name_selector_entry);
-
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]