From bba74b7a0b414809e29d8b19978db1996a8822ac Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 23 Feb 2013 17:44:20 +0000 Subject: Handle readonly attribute for text inputs and textareas. --- render/box_textarea.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'render/box_textarea.c') diff --git a/render/box_textarea.c b/render/box_textarea.c index 3d9838fa1..b529fe65c 100644 --- a/render/box_textarea.c +++ b/render/box_textarea.c @@ -209,11 +209,10 @@ bool box_textarea_create_textarea(html_content *html, textarea_setup ta_setup; textarea_flags ta_flags; plot_font_style_t fstyle; + bool read_only = false; struct form_control *gadget = box->gadget; const char *text; - /** TODO: Read only textarea */ - assert(gadget != NULL); assert(gadget->type == GADGET_TEXTAREA || gadget->type == GADGET_TEXTBOX || @@ -221,6 +220,13 @@ bool box_textarea_create_textarea(html_content *html, if (gadget->type == GADGET_TEXTAREA) { ta_flags = TEXTAREA_MULTILINE; + dom_html_text_area_element *textarea = + (dom_html_text_area_element *) node; + + err = dom_html_text_area_element_get_read_only( + textarea, &read_only); + if (err != DOM_NO_ERR) + return false; /* Get the textarea's initial content */ err = dom_node_get_text_content(node, &dom_text); @@ -230,6 +236,11 @@ bool box_textarea_create_textarea(html_content *html, } else { dom_html_input_element *input = (dom_html_input_element *) node; + err = dom_html_input_element_get_read_only( + input, &read_only); + if (err != DOM_NO_ERR) + return false; + if (gadget->type == GADGET_PASSWORD) ta_flags = TEXTAREA_PASSWORD; else @@ -249,6 +260,9 @@ bool box_textarea_create_textarea(html_content *html, text = ""; } + if (read_only) + ta_flags |= TEXTAREA_READONLY; + gadget->data.text.data.html = html; gadget->data.text.data.gadget = gadget; -- cgit v1.2.3