diff options
author | James Booth <boothj5@gmail.com> | 2014-09-17 23:34:48 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2014-09-17 23:36:10 +0100 |
commit | a905ce18a3419ccdec86334d624eeef38691b2b6 (patch) | |
tree | 040e131004e69785d488c51f61740229541e7351 /src/xmpp | |
parent | 45ba6f1feded1c1ece03c85401b959adc8bbd93a (diff) | |
download | profani-tty-a905ce18a3419ccdec86334d624eeef38691b2b6.tar.gz |
Added autocompletion for jid-multi form fields
Diffstat (limited to 'src/xmpp')
-rw-r--r-- | src/xmpp/form.c | 12 |
1 files changed, 11 insertions, 1 deletions
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 { |