diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2012-03-28 13:34:54 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2012-03-28 13:34:54 +0000 |
commit | b8e72de7d8fb2c4266fc85a4fe76c65e9b5e5970 (patch) | |
tree | 47aba65e34600e9755ea429dd60a7d1023093171 /css | |
parent | 830e53327febd61db7a116ff4c7287436c113245 (diff) | |
download | netsurf-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.c | 62 |
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; } |