aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/component/select-names/e-select-names-text-model.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/gui/component/select-names/e-select-names-text-model.c')
-rw-r--r--addressbook/gui/component/select-names/e-select-names-text-model.c40
1 files changed, 31 insertions, 9 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 3838e974f6..dd28a50239 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
@@ -125,11 +125,17 @@ e_select_names_text_model_set_text (ETextModel *model, gchar *text)
EIterator *iterator = e_list_get_iterator(e_select_names_model_get_data(source));
e_iterator_reset(iterator);
+ if (!e_iterator_is_valid(iterator)) {
+ gtk_object_unref(GTK_OBJECT(iterator));
+ iterator = NULL;
+ }
e_select_names_model_replace(source,
iterator,
0,
strlen(model->text),
text);
+ if (iterator)
+ gtk_object_unref(GTK_OBJECT(iterator));
}
static void
@@ -141,14 +147,21 @@ e_select_names_text_model_insert (ETextModel *model, gint position, gchar
for (e_iterator_reset(iterator); e_iterator_is_valid(iterator); e_iterator_next(iterator)) {
int this_length = get_length(iterator);
if (position <= this_length) {
- e_select_names_model_insert(source,
- iterator,
- position,
- text);
+ break;
} else {
position -= this_length + 1;
}
}
+ if (!e_iterator_is_valid(iterator)) {
+ gtk_object_unref(GTK_OBJECT(iterator));
+ iterator = NULL;
+ }
+ e_select_names_model_insert(source,
+ iterator,
+ position,
+ text);
+ if (iterator)
+ gtk_object_unref(GTK_OBJECT(iterator));
}
static void
@@ -160,16 +173,22 @@ e_select_names_text_model_insert_length (ETextModel *model, gint position, gchar
for (e_iterator_reset(iterator); e_iterator_is_valid(iterator); e_iterator_next(iterator)) {
int this_length = get_length(iterator);
if (position <= this_length) {
- e_select_names_model_insert_length(source,
- iterator,
- position,
- text,
- length);
break;
} else {
position -= this_length + 1;
}
}
+ if (!e_iterator_is_valid(iterator)) {
+ gtk_object_unref(GTK_OBJECT(iterator));
+ iterator = NULL;
+ }
+ e_select_names_model_insert_length(source,
+ iterator,
+ position,
+ text,
+ length);
+ if (iterator)
+ gtk_object_unref(GTK_OBJECT(iterator));
}
static void
@@ -190,6 +209,8 @@ e_select_names_text_model_delete (ETextModel *model, gint position, gint
position -= this_length + 1;
}
}
+ if (iterator)
+ gtk_object_unref(GTK_OBJECT(iterator));
}
static void
@@ -233,6 +254,7 @@ e_select_names_text_model_model_changed (ESelectNamesModel *source,
*lengthsp = -1;
g_free(E_TEXT_MODEL(model)->text);
E_TEXT_MODEL(model)->text = string;
+ e_text_model_changed(E_TEXT_MODEL(model));
}