From 6683241eb5b06bbafd20fca9d1fad0fb3ef28676 Mon Sep 17 00:00:00 2001 From: Jon Trowbridge Date: Thu, 9 Aug 2001 19:10:14 +0000 Subject: If the last character we inserted was a "magic comma", remember its 2001-08-09 Jon Trowbridge * gui/component/select-names/e-select-names-text-model.c This change is dedicated to Jacob Berkman. (e_select_names_text_model_insert_length): If the last character we inserted was a "magic comma", remember its position. (e_select_names_text_model_delete): If the last character we inserted was a "magic comma", and if the next thing we do is to hit backspace, delete both the comma and the extra whitespace we added. (e_select_names_text_model_init): Initialize our last magic comma position. svn path=/trunk/; revision=11839 --- .../gui/component/select-names/e-select-names-text-model.c | 14 ++++++++++++++ .../gui/component/select-names/e-select-names-text-model.h | 2 ++ 2 files changed, 16 insertions(+) (limited to 'addressbook/gui') 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 { -- cgit v1.2.3