Ensure textual input boxes re-update the DOM with new values

This commit is contained in:
Daniel Silverstone 2014-01-04 16:30:09 +00:00
parent 068b07494b
commit 533cfa27da
3 changed files with 43 additions and 1 deletions

View File

@ -206,7 +206,9 @@ static void box_textarea_callback(void *data, struct textarea_msg *msg)
break;
case TEXTAREA_MSG_TEXT_MODIFIED:
/* TODO */
form_gadget_update_value(d->html, gadget,
strndup(msg->data.modified.text,
msg->data.modified.len));
break;
}
}

View File

@ -1539,3 +1539,40 @@ void form_submit(nsurl *page_url, struct browser_window *target,
fetch_multipart_data_destroy(success);
free(data);
}
void form_gadget_update_value(struct html_content *html,
struct form_control *control, char *value)
{
switch (control->type) {
case GADGET_HIDDEN:
case GADGET_TEXTBOX:
case GADGET_TEXTAREA:
case GADGET_PASSWORD:
case GADGET_FILE:
if (control->value != NULL) {
free(control->value);
}
control->value = value;
if (control->node != NULL) {
dom_exception err;
dom_string *str;
err = dom_string_create((uint8_t *)value,
strlen(value), &str);
if (err == DOM_NO_ERR) {
if (control->type == GADGET_TEXTAREA)
err = dom_html_text_area_element_set_value(
(dom_html_text_area_element *)(control->node),
str);
else
err = dom_html_input_element_set_value(
(dom_html_input_element *)(control->node),
str);
dom_string_unref(str);
}
}
break;
default:
/* Do nothing */
break;
}
}

View File

@ -183,4 +183,7 @@ void form_submit(nsurl *page_url, struct browser_window *target,
struct form *form, struct form_control *submit_button);
void form_radio_set(struct html_content *html, struct form_control *radio);
void form_gadget_update_value(struct html_content *html,
struct form_control *control, char *value);
#endif