summaryrefslogtreecommitdiff
path: root/gtk/gtkcssshorthandpropertyimpl.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2016-04-18 14:09:41 -0400
committerMatthias Clasen <mclasen@redhat.com>2016-04-18 14:09:41 -0400
commit68ce676498724aac94f22076ef13f19dd795f5e9 (patch)
tree066041a66339456f398847e7f1bb3aba4ca6e215 /gtk/gtkcssshorthandpropertyimpl.c
parentdf22f3017bbe5c4ff24565862d3a2204f0869be8 (diff)
downloadgtk+-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.c61
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;