diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2012-03-25 23:14:18 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2012-03-25 23:14:18 +0000 |
commit | 32f2b175feb811a9fbe5fc0ee41f91cf6acb9030 (patch) | |
tree | 1a96ebd5964b5e606e513cd07cc11cfa2faa0f55 /css/select.c | |
parent | b9a2def970522a4472168ecd12c338b7ef1aa2b9 (diff) | |
download | netsurf-32f2b175feb811a9fbe5fc0ee41f91cf6acb9030.tar.gz netsurf-32f2b175feb811a9fbe5fc0ee41f91cf6acb9030.tar.bz2 |
convert node_presentational_hint_float
svn path=/trunk/netsurf/; revision=13714
Diffstat (limited to 'css/select.c')
-rw-r--r-- | css/select.c | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/css/select.c b/css/select.c index 6db206168..0e82e0c7f 100644 --- a/css/select.c +++ b/css/select.c @@ -2675,34 +2675,44 @@ node_presentational_hint_float(nscss_select_ctx *ctx, dom_node *node, css_hint *hint) { -#ifdef FIXME - xmlChar *align = NULL; + dom_exception err; + dom_string *node_name = NULL; + dom_string *align; - /** \todo input[type=image][align=*] - $11.3.3 */ - if (strcmp((const char *) n->name, "table") == 0 || - strcmp((const char *) n->name, "applet") == 0 || - strcmp((const char *) n->name, "embed") == 0 || - strcmp((const char *) n->name, "iframe") == 0 || - strcmp((const char *) n->name, "img") == 0 || - strcmp((const char *) n->name, "object") == 0) - align = xmlGetProp(n, (const xmlChar *) "align"); - - if (align == NULL) - return CSS_PROPERTY_NOT_SET; + err = dom_node_get_node_name(node, &node_name); + if ((err != DOM_NO_ERR) || (node_name == NULL)) { + return CSS_NOMEM; + } - if (strcasecmp((const char *) align, "left") == 0) { - hint->status = CSS_FLOAT_LEFT; - } else if (strcasecmp((const char *) align, "right") == 0) { - hint->status = CSS_FLOAT_RIGHT; - } else { - xmlFree(align); - return CSS_PROPERTY_NOT_SET; - } + /** \todo input[type=image][align=*] - $11.3.3 */ + if (!dom_string_isequal(node_name, nscss_dom_string_applet) && + !dom_string_isequal(node_name, nscss_dom_string_embed) && + !dom_string_isequal(node_name, nscss_dom_string_iframe) && + !dom_string_isequal(node_name, nscss_dom_string_img) && + !dom_string_isequal(node_name, nscss_dom_string_object)) { + dom_string_unref(node_name); + return CSS_PROPERTY_NOT_SET; + } - xmlFree(align); + dom_string_unref(node_name); + err = dom_element_get_attribute(node, nscss_dom_string_align, &align); + if ((err != DOM_NO_ERR) || (align == NULL)) { + return CSS_PROPERTY_NOT_SET; + } + + if (dom_string_isequal(align, nscss_dom_string_left)) { + hint->status = CSS_FLOAT_LEFT; + dom_string_unref(align); return CSS_OK; -#endif + } else if (dom_string_isequal(align, nscss_dom_string_right)) { + hint->status = CSS_FLOAT_RIGHT; + dom_string_unref(align); + return CSS_OK; + } + + dom_string_unref(align); + return CSS_PROPERTY_NOT_SET; } |