about summary refs log tree commit diff stats
path: root/src/xmpp/form.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-09-17 23:34:48 +0100
committerJames Booth <boothj5@gmail.com>2014-09-17 23:36:10 +0100
commita905ce18a3419ccdec86334d624eeef38691b2b6 (patch)
tree040e131004e69785d488c51f61740229541e7351 /src/xmpp/form.c
parent45ba6f1feded1c1ece03c85401b959adc8bbd93a (diff)
downloadprofani-tty-a905ce18a3419ccdec86334d624eeef38691b2b6.tar.gz
Added autocompletion for jid-multi form fields
Diffstat (limited to 'src/xmpp/form.c')
-rw-r--r--src/xmpp/form.c12
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 {