summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
Diffstat (limited to 'render')
-rw-r--r--render/box_textarea.c18
1 files changed, 16 insertions, 2 deletions
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;