From 792dbe6e44cc1d3a78dfb62f99c001bc46131de7 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 21 Jul 2012 18:16:04 +0100 Subject: Add textarea support back in. --- render/html_forms.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'render/html_forms.c') diff --git a/render/html_forms.c b/render/html_forms.c index 5212b3ab8..5b917cde8 100644 --- a/render/html_forms.c +++ b/render/html_forms.c @@ -391,6 +391,52 @@ out: return control; } +static struct form_control * +parse_textarea_element(struct form *forms, dom_html_text_area_element *ta) +{ + struct form_control *control = NULL; + dom_html_form_element *form = NULL; + dom_string *ds_name = NULL; + + char *name = NULL; + + if (dom_html_text_area_element_get_form(ta, &form) != DOM_NO_ERR) + goto out; + + if (dom_html_text_area_element_get_name(ta, &ds_name) != DOM_NO_ERR) + goto out; + + if (ds_name != NULL) + name = strndup(dom_string_data(ds_name), + dom_string_byte_length(ds_name)); + + control = form_new_control(ta, GADGET_TEXTAREA); + + if (control == NULL) + goto out; + + if (name != NULL) { + /* Hand the name string over */ + control->name = name; + name = NULL; + } + + if (form != NULL && control != NULL) + form_add_control(find_form(forms, form), control); + +out: + if (form != NULL) + dom_node_unref(form); + if (ds_name != NULL) + dom_string_unref(ds_name); + + if (name != NULL) + free(name); + + + return control; +} + static struct form_control * invent_fake_gadget(dom_node *node) { @@ -441,6 +487,10 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod html_dom_string_input)) { ctl = parse_input_element(forms, (dom_html_input_element *) node); + } else if (dom_string_caseless_isequal(ds_name, + html_dom_string_textarea)) { + ctl = parse_textarea_element(forms, + (dom_html_text_area_element *) node); } } -- cgit v1.2.3