summaryrefslogtreecommitdiff
path: root/css
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2012-03-28 13:34:54 +0000
committerVincent Sanders <vince@netsurf-browser.org>2012-03-28 13:34:54 +0000
commitb8e72de7d8fb2c4266fc85a4fe76c65e9b5e5970 (patch)
tree47aba65e34600e9755ea429dd60a7d1023093171 /css
parent830e53327febd61db7a116ff4c7287436c113245 (diff)
downloadnetsurf-b8e72de7d8fb2c4266fc85a4fe76c65e9b5e5970.tar.gz
netsurf-b8e72de7d8fb2c4266fc85a4fe76c65e9b5e5970.tar.bz2
convert node_presentational_hint_height
svn path=/trunk/netsurf/; revision=13757
Diffstat (limited to 'css')
-rw-r--r--css/select.c62
1 files changed, 37 insertions, 25 deletions
diff --git a/css/select.c b/css/select.c
index 73bfb0533..01562137e 100644
--- a/css/select.c
+++ b/css/select.c
@@ -2474,41 +2474,53 @@ node_presentational_hint_height(nscss_select_ctx *ctx,
dom_node *node,
css_hint *hint)
{
-#ifdef FIXME
- xmlChar *height;
+ dom_string *name;
+ dom_string *height = NULL;
+ dom_exception err;
+ bool textarea = false;
- if (strcmp((const char *) n->name, "iframe") == 0 ||
- strcmp((const char *) n->name, "td") == 0 ||
- strcmp((const char *) n->name, "th") == 0 ||
- strcmp((const char *) n->name, "tr") == 0 ||
- strcmp((const char *) n->name, "img") == 0 ||
- strcmp((const char *) n->name, "object") == 0 ||
- strcmp((const char *) n->name, "applet") == 0)
- height = xmlGetProp(n, (const xmlChar *) "height");
- else if (strcmp((const char *) n->name, "textarea") == 0)
- height = xmlGetProp(n, (const xmlChar *) "rows");
- else
- height = NULL;
+ err = dom_node_get_node_name(node, &name);
+ if (err != DOM_NO_ERR)
+ return CSS_PROPERTY_NOT_SET;
+
+ if (dom_string_isequal(name, nscss_dom_string_iframe) ||
+ dom_string_isequal(name, nscss_dom_string_td) ||
+ dom_string_isequal(name, nscss_dom_string_th) ||
+ dom_string_isequal(name, nscss_dom_string_tr) ||
+ dom_string_isequal(name, nscss_dom_string_img) ||
+ dom_string_isequal(name, nscss_dom_string_object) ||
+ dom_string_isequal(name, nscss_dom_string_applet)) {
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_height,
+ &height);
+ } else if (dom_string_isequal(name, nscss_dom_string_textarea)) {
+ textarea = true;
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_rows,
+ &height);
+ }
- if (height == NULL)
+ dom_string_unref(name);
+
+ if ((err != DOM_NO_ERR) || (height == NULL)) {
return CSS_PROPERTY_NOT_SET;
+ }
- if (parse_dimension((const char *) height, false,
+ if (parse_dimension((const char *)dom_string_data(height),
+ false,
&hint->data.length.value,
&hint->data.length.unit)) {
hint->status = CSS_HEIGHT_SET;
- } else {
- xmlFree(height);
- return CSS_PROPERTY_NOT_SET;
- }
- xmlFree(height);
+ if (textarea) {
+ hint->data.length.unit = CSS_UNIT_EM;
+ }
- if (strcmp((const char *) n->name, "textarea") == 0)
- hint->data.length.unit = CSS_UNIT_EM;
+ dom_string_unref(height);
+ return CSS_OK;
+ }
- return CSS_OK;
-#endif
+ dom_string_unref(height);
return CSS_PROPERTY_NOT_SET;
}