From a905ce18a3419ccdec86334d624eeef38691b2b6 Mon Sep 17 00:00:00 2001 From: James Booth Date: Wed, 17 Sep 2014 23:34:48 +0100 Subject: Added autocompletion for jid-multi form fields --- src/xmpp/form.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/xmpp') diff --git a/src/xmpp/form.c b/src/xmpp/form.c index 13b652f4..25a704d9 100644 --- a/src/xmpp/form.c +++ b/src/xmpp/form.c @@ -234,7 +234,6 @@ form_create(xmpp_stanza_t * const form_stanza) char *value = xmpp_stanza_get_text(field_child); if (value != NULL) { field->values = g_slist_append(field->values, strdup(value)); - xmpp_free(ctx, value); if (field->type_t == FIELD_TEXT_MULTI) { GString *ac_val = g_string_new(""); @@ -242,6 +241,11 @@ form_create(xmpp_stanza_t * const form_stanza) autocomplete_add(field->value_ac, ac_val->str); g_string_free(ac_val, TRUE); } + if (field->type_t == FIELD_JID_MULTI) { + autocomplete_add(field->value_ac, value); + } + + xmpp_free(ctx, value); } // handle options @@ -502,6 +506,9 @@ _form_add_unique_value(DataForm *form, const char * const tag, char *value) } field->values = g_slist_append(field->values, strdup(value)); + if (field->type_t == FIELD_JID_MULTI) { + autocomplete_add(field->value_ac, value); + } form->modified = TRUE; return TRUE; } @@ -526,6 +533,9 @@ _form_remove_value(DataForm *form, const char * const tag, char *value) free(found->data); found->data = NULL; field->values = g_slist_delete_link(field->values, found); + if (field->type_t == FIELD_JID_MULTI) { + autocomplete_remove(field->value_ac, value); + } form->modified = TRUE; return TRUE; } else { -- cgit 1.4.1-2-gfad0