aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/component
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/gui/component')
-rw-r--r--addressbook/gui/component/select-names/e-select-names-text-model.c14
-rw-r--r--addressbook/gui/component/select-names/e-select-names-text-model.h2
2 files changed, 16 insertions, 0 deletions
diff --git a/addressbook/gui/component/select-names/e-select-names-text-model.c b/addressbook/gui/component/select-names/e-select-names-text-model.c
index 2f10516dd1..c6f2b7856b 100644
--- a/addressbook/gui/component/select-names/e-select-names-text-model.c
+++ b/addressbook/gui/component/select-names/e-select-names-text-model.c
@@ -140,6 +140,7 @@ dump_model (ESelectNamesTextModel *text_model)
static void
e_select_names_text_model_init (ESelectNamesTextModel *model)
{
+ model->last_magic_comma_pos = -1;
}
static void
@@ -301,6 +302,8 @@ e_select_names_text_model_insert_length (ETextModel *model, gint pos, const gcha
gint index, start_pos, text_len;
gboolean inside_quote = FALSE;
+ E_SELECT_NAMES_TEXT_MODEL (model)->last_magic_comma_pos = -1;
+
if (out)
fprintf (out, "processing [%c]\n", text[i]);
@@ -387,6 +390,8 @@ e_select_names_text_model_insert_length (ETextModel *model, gint pos, const gcha
pos += SEPLEN;
}
+ E_SELECT_NAMES_TEXT_MODEL (model)->last_magic_comma_pos = pos;
+
} else {
EReposInsertShift repos;
gint offset = MAX (pos - start_pos, 0);
@@ -473,6 +478,14 @@ e_select_names_text_model_delete (ETextModel *model, gint pos, gint length)
if (length < 0)
return;
+ if (E_SELECT_NAMES_TEXT_MODEL (model)->last_magic_comma_pos == pos+1
+ && length == 1) {
+ --pos;
+ if (pos >= 0)
+ ++length;
+ E_SELECT_NAMES_TEXT_MODEL (model)->last_magic_comma_pos = -1;
+ }
+
e_select_names_model_text_pos (source, pos, &index, &start_pos, &text_len);
if (out)
@@ -636,6 +649,7 @@ e_select_names_text_model_delete (ETextModel *model, gint pos, gint length)
}
finished:
+ E_SELECT_NAMES_TEXT_MODEL (model)->last_magic_comma_pos = -1;
gtk_signal_handler_unblock (GTK_OBJECT (source), E_SELECT_NAMES_TEXT_MODEL (model)->source_resize_id);
dump_model (E_SELECT_NAMES_TEXT_MODEL (model));
}
diff --git a/addressbook/gui/component/select-names/e-select-names-text-model.h b/addressbook/gui/component/select-names/e-select-names-text-model.h
index 7a9e0a7396..fa6ab11a63 100644
--- a/addressbook/gui/component/select-names/e-select-names-text-model.h
+++ b/addressbook/gui/component/select-names/e-select-names-text-model.h
@@ -31,6 +31,8 @@ struct _ESelectNamesTextModel {
ESelectNamesModel *source;
gint source_changed_id;
gint source_resize_id;
+
+ gint last_magic_comma_pos;
};
struct _ESelectNamesTextModelClass {