diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2016-11-19 14:52:26 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2016-11-19 14:52:26 +0000 |
commit | d3c7d410a87f02956523b64bc5af380804e67690 (patch) | |
tree | d42b492efbb870138e6a3b06ad2110a7d657de3c | |
parent | 1fb06929d9769077296a4e0464443fa755c3916b (diff) | |
parent | b3d98a4d7daa0bff45b113ed9757ce04378a31e7 (diff) | |
download | netsurf-d3c7d410a87f02956523b64bc5af380804e67690.tar.gz netsurf-d3c7d410a87f02956523b64bc5af380804e67690.tar.bz2 |
Merge branch 'tlsa/shared-styles'
-rw-r--r-- | content/handlers/css/select.c | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/content/handlers/css/select.c b/content/handlers/css/select.c index 69a1b2f42..aaede7727 100644 --- a/content/handlers/css/select.c +++ b/content/handlers/css/select.c @@ -253,6 +253,7 @@ static void nscss_dom_user_data_handler(dom_node_operation operation, css_select_results *nscss_get_style(nscss_select_ctx *ctx, dom_node *n, uint64_t media, const css_stylesheet *inline_style) { + css_computed_style *composed; css_select_results *styles; int pseudo_element; css_error error; @@ -274,11 +275,16 @@ css_select_results *nscss_get_style(nscss_select_ctx *ctx, dom_node *n, error = css_computed_style_compose(ctx->parent_style, styles->styles[CSS_PSEUDO_ELEMENT_NONE], nscss_compute_font_size, NULL, - styles->styles[CSS_PSEUDO_ELEMENT_NONE]); + &composed); if (error != CSS_OK) { css_select_results_destroy(styles); return NULL; } + + /* Replace select_results style with composed style */ + css_computed_style_destroy( + styles->styles[CSS_PSEUDO_ELEMENT_NONE]); + styles->styles[CSS_PSEUDO_ELEMENT_NONE] = composed; } for (pseudo_element = CSS_PSEUDO_ELEMENT_NONE + 1; @@ -301,40 +307,20 @@ css_select_results *nscss_get_style(nscss_select_ctx *ctx, dom_node *n, styles->styles[CSS_PSEUDO_ELEMENT_NONE], styles->styles[pseudo_element], nscss_compute_font_size, NULL, - styles->styles[pseudo_element]); + &composed); if (error != CSS_OK) { /* TODO: perhaps this shouldn't be quite so * catastrophic? */ css_select_results_destroy(styles); return NULL; } - } - - return styles; -} - -/** - * Get an initial style - * - * \param ctx CSS selection context - * \return Pointer to partial computed style, or NULL on failure - */ -static css_computed_style *nscss_get_initial_style(nscss_select_ctx *ctx) -{ - css_computed_style *style; - css_error error; - - error = css_computed_style_create(&style); - if (error != CSS_OK) - return NULL; - error = css_computed_style_initialise(style, &selection_handler, ctx); - if (error != CSS_OK) { - css_computed_style_destroy(style); - return NULL; + /* Replace select_results style with composed style */ + css_computed_style_destroy(styles->styles[pseudo_element]); + styles->styles[pseudo_element] = composed; } - return style; + return styles; } /** @@ -347,21 +333,26 @@ static css_computed_style *nscss_get_initial_style(nscss_select_ctx *ctx) css_computed_style *nscss_get_blank_style(nscss_select_ctx *ctx, const css_computed_style *parent) { - css_computed_style *partial; + css_computed_style *partial, *composed; css_error error; - partial = nscss_get_initial_style(ctx); - if (partial == NULL) + error = css_select_default_style(ctx->ctx, + &selection_handler, ctx, &partial); + if (error != CSS_OK) { return NULL; + } + /* TODO: Do we really need to compose? Initial style shouldn't + * have any inherited properties. */ error = css_computed_style_compose(parent, partial, - nscss_compute_font_size, NULL, partial); + nscss_compute_font_size, NULL, &composed); + css_computed_style_destroy(partial); if (error != CSS_OK) { - css_computed_style_destroy(partial); + css_computed_style_destroy(composed); return NULL; } - return partial; + return composed; } /** |