css: Add line-height property
This adds the plumbing to parse the line-height property from CSS. Widgets are not picking it up yet.
This commit is contained in:
@@ -204,6 +204,10 @@ gtk_css_animated_style_set_animated_value (GtkCssAnimatedStyle *animated,
|
||||
unshare_font (animated);
|
||||
gtk_css_take_value (&style->font->letter_spacing, value);
|
||||
break;
|
||||
case GTK_CSS_PROPERTY_LINE_HEIGHT:
|
||||
unshare_font (animated);
|
||||
gtk_css_take_value (&style->font->line_height, value);
|
||||
break;
|
||||
case GTK_CSS_PROPERTY_TEXT_DECORATION_LINE:
|
||||
unshare_font_variant (animated);
|
||||
gtk_css_take_value (&style->font_variant->text_decoration_line, value);
|
||||
|
||||
@@ -107,11 +107,12 @@ static const int font_props[] = {
|
||||
GTK_CSS_PROPERTY_FONT_WEIGHT,
|
||||
GTK_CSS_PROPERTY_FONT_STRETCH,
|
||||
GTK_CSS_PROPERTY_LETTER_SPACING,
|
||||
GTK_CSS_PROPERTY_TEXT_SHADOW,
|
||||
GTK_CSS_PROPERTY_TEXT_SHADOW,
|
||||
GTK_CSS_PROPERTY_CARET_COLOR,
|
||||
GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR,
|
||||
GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS,
|
||||
GTK_CSS_PROPERTY_FONT_VARIATION_SETTINGS,
|
||||
GTK_CSS_PROPERTY_LINE_HEIGHT,
|
||||
};
|
||||
static const int font_variant_props[] = {
|
||||
GTK_CSS_PROPERTY_TEXT_DECORATION_LINE,
|
||||
@@ -417,6 +418,9 @@ gtk_css_static_style_set_value (GtkCssStaticStyle *sstyle,
|
||||
case GTK_CSS_PROPERTY_LETTER_SPACING:
|
||||
gtk_css_take_value (&style->font->letter_spacing, value);
|
||||
break;
|
||||
case GTK_CSS_PROPERTY_LINE_HEIGHT:
|
||||
gtk_css_take_value (&style->font->line_height, value);
|
||||
break;
|
||||
case GTK_CSS_PROPERTY_TEXT_DECORATION_LINE:
|
||||
gtk_css_take_value (&style->font_variant->text_decoration_line, value);
|
||||
break;
|
||||
|
||||
@@ -117,6 +117,8 @@ gtk_css_style_get_value (GtkCssStyle *style,
|
||||
return style->font->font_stretch;
|
||||
case GTK_CSS_PROPERTY_LETTER_SPACING:
|
||||
return style->font->letter_spacing;
|
||||
case GTK_CSS_PROPERTY_LINE_HEIGHT:
|
||||
return style->font->line_height;
|
||||
case GTK_CSS_PROPERTY_TEXT_DECORATION_LINE:
|
||||
return style->font_variant->text_decoration_line;
|
||||
case GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR:
|
||||
|
||||
0
gtk/gtkcssstyle.h
Normal file
0
gtk/gtkcssstyle.h
Normal file
@@ -151,6 +151,7 @@ struct _GtkCssFontValues {
|
||||
GtkCssValue *secondary_caret_color; // NULL if currentColor
|
||||
GtkCssValue *font_feature_settings;
|
||||
GtkCssValue *font_variation_settings;
|
||||
GtkCssValue *line_height;
|
||||
};
|
||||
|
||||
struct _GtkCssFontVariantValues {
|
||||
|
||||
@@ -812,6 +812,25 @@ transform_origin_parse (GtkCssStyleProperty *property,
|
||||
return _gtk_css_position_value_parse (parser);
|
||||
}
|
||||
|
||||
static GtkCssValue *
|
||||
parse_line_height (GtkCssStyleProperty *property,
|
||||
GtkCssParser *parser)
|
||||
{
|
||||
GtkCssValue *value = NULL;
|
||||
|
||||
if (gtk_css_parser_try_ident (parser, "normal"))
|
||||
value = _gtk_css_ident_value_new ("normal");
|
||||
else
|
||||
value = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER |
|
||||
GTK_CSS_PARSE_PERCENT |
|
||||
GTK_CSS_POSITIVE_ONLY);
|
||||
|
||||
if (value == NULL)
|
||||
gtk_css_parser_error_syntax (parser, "Not a valid line-height value");
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/*** REGISTRATION ***/
|
||||
|
||||
G_STATIC_ASSERT (GTK_CSS_PROPERTY_COLOR == 0);
|
||||
@@ -1401,4 +1420,10 @@ _gtk_css_style_property_init_properties (void)
|
||||
GTK_CSS_AFFECTS_TEXT_ATTRS | GTK_CSS_AFFECTS_TEXT_SIZE,
|
||||
parse_font_variation_settings,
|
||||
gtk_css_font_variations_value_new_default ());
|
||||
gtk_css_style_property_register ("line-height",
|
||||
GTK_CSS_PROPERTY_LINE_HEIGHT,
|
||||
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
|
||||
GTK_CSS_AFFECTS_TEXT_SIZE,
|
||||
parse_line_height,
|
||||
_gtk_css_ident_value_new ("normal"));
|
||||
}
|
||||
|
||||
@@ -275,6 +275,7 @@ enum { /*< skip >*/
|
||||
GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR,
|
||||
GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS,
|
||||
GTK_CSS_PROPERTY_FONT_VARIATION_SETTINGS,
|
||||
GTK_CSS_PROPERTY_LINE_HEIGHT,
|
||||
/* add more */
|
||||
GTK_CSS_PROPERTY_N_PROPERTIES
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user