diff options
Diffstat (limited to 'css')
-rw-r--r-- | css/select.c | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/css/select.c b/css/select.c index dc0d3bf90..5d0a2411b 100644 --- a/css/select.c +++ b/css/select.c @@ -2380,30 +2380,42 @@ node_presentational_hint_border_spacing(nscss_select_ctx *ctx, dom_node *node, css_hint *hint) { -#ifdef FIXME - xmlChar *cellspacing; + dom_exception err; + dom_string *node_name = NULL; + dom_string *cellspacing = NULL; + + err = dom_node_get_node_name(node, &node_name); + if ((err != DOM_NO_ERR) || (node_name == NULL)) { + return CSS_PROPERTY_NOT_SET; + } - if (strcmp((const char *) n->name, "table") != 0) + if (!dom_string_caseless_isequal(node_name, nscss_dom_string_table)) { + dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; + } + + dom_string_unref(node_name); - cellspacing = xmlGetProp(n, (const xmlChar *) "cellspacing"); - if (cellspacing == NULL) + err = dom_element_get_attribute(node, nscss_dom_string_cellspacing, &cellspacing); + if ((err != DOM_NO_ERR) || (cellspacing == NULL)) { return CSS_PROPERTY_NOT_SET; + } + - if (parse_dimension((const char *) cellspacing, false, + if (parse_dimension((const char *)dom_string_data(cellspacing), + false, &hint->data.position.h.value, &hint->data.position.h.unit)) { + hint->data.position.v = hint->data.position.h; hint->status = CSS_BORDER_SPACING_SET; - } else { - xmlFree(cellspacing); - return CSS_PROPERTY_NOT_SET; - } - xmlFree(cellspacing); + dom_string_unref(cellspacing); + return CSS_OK; - return CSS_OK; -#endif + } + + dom_string_unref(cellspacing); return CSS_PROPERTY_NOT_SET; } |