diff options
author | Matthias Clasen <mclasen@redhat.com> | 2016-04-18 14:09:41 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-04-18 14:09:41 -0400 |
commit | 68ce676498724aac94f22076ef13f19dd795f5e9 (patch) | |
tree | 066041a66339456f398847e7f1bb3aba4ca6e215 /gtk/gtkcssshorthandpropertyimpl.c | |
parent | df22f3017bbe5c4ff24565862d3a2204f0869be8 (diff) | |
download | gtk+-68ce676498724aac94f22076ef13f19dd795f5e9.tar.gz |
Add backwards compat back
Apparently, there's lots of font: "pango font description" out there,
so keep parsing this, with a deprecation warning.
Diffstat (limited to 'gtk/gtkcssshorthandpropertyimpl.c')
-rw-r--r-- | gtk/gtkcssshorthandpropertyimpl.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/gtk/gtkcssshorthandpropertyimpl.c b/gtk/gtkcssshorthandpropertyimpl.c index 2714d680cd..4886395ee8 100644 --- a/gtk/gtkcssshorthandpropertyimpl.c +++ b/gtk/gtkcssshorthandpropertyimpl.c @@ -425,6 +425,54 @@ parse_border (GtkCssShorthandProperty *shorthand, } static gboolean +parse_font_with_pango (GtkCssShorthandProperty *shorthand, + GtkCssValue **values, + GtkCssParser *parser) +{ + PangoFontDescription *desc; + guint mask; + char *str; + + str = _gtk_css_parser_read_value (parser); + if (str == NULL) + return FALSE; + + desc = pango_font_description_from_string (str); + g_free (str); + + mask = pango_font_description_get_set_fields (desc); + + if (mask & PANGO_FONT_MASK_FAMILY) + { + values[0] = _gtk_css_array_value_new (_gtk_css_string_value_new (pango_font_description_get_family (desc))); + } + if (mask & PANGO_FONT_MASK_STYLE) + { + values[1] = _gtk_css_font_style_value_new (pango_font_description_get_style (desc)); + } + if (mask & PANGO_FONT_MASK_VARIANT) + { + values[2] = _gtk_css_font_variant_value_new (pango_font_description_get_variant (desc)); + } + if (mask & PANGO_FONT_MASK_WEIGHT) + { + values[3] = _gtk_css_font_weight_value_new (pango_font_description_get_weight (desc)); + } + if (mask & PANGO_FONT_MASK_STRETCH) + { + values[4] = _gtk_css_font_stretch_value_new (pango_font_description_get_stretch (desc)); + } + if (mask & PANGO_FONT_MASK_SIZE) + { + values[5] = _gtk_css_number_value_new ((double) pango_font_description_get_size (desc) / PANGO_SCALE, GTK_CSS_PX); + } + + pango_font_description_free (desc); + + return TRUE; +} + +static gboolean parse_font (GtkCssShorthandProperty *shorthand, GtkCssValue **values, GtkCssParser *parser) @@ -462,6 +510,19 @@ parse_font (GtkCssShorthandProperty *shorthand, while (parsed_one && !value_is_done_parsing (parser)); values[5] = gtk_css_font_size_value_parse (parser); + + if (values[1] == NULL && values[2] == NULL && values[3] == NULL && + values[4] == NULL && values[5] == NULL) + { + if (parse_font_with_pango (shorthand, values, parser)) + { + _gtk_css_parser_error_full (parser, + GTK_CSS_PROVIDER_ERROR_DEPRECATED, + "Using Pango syntax for the font: style property is deprecated; please use CSS syntax"); + return TRUE; + } + } + values[0] = gtk_css_font_family_value_parse (parser); return values[0] != NULL && values[5] != NULL; |