css: Add "border-spacing" CSS property

It's using a GtkCssPositionValue, even though that name is wrong. But
the functionality of managing 2 lengths is exactly what we want.

Nobody is using this yet.
This commit is contained in:
Benjamin Otte 2016-12-10 03:26:24 +01:00
parent 438ad208e7
commit d7148a4718
4 changed files with 47 additions and 2 deletions

View File

@ -291,6 +291,32 @@ _gtk_css_position_value_try_parse (GtkCssParser *parser)
return position_value_parse (parser, TRUE); return position_value_parse (parser, TRUE);
} }
GtkCssValue *
gtk_css_position_value_parse_spacing (GtkCssParser *parser)
{
GtkCssValue *x, *y;
x = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY);
if (x == NULL)
return NULL;
if (gtk_css_number_value_can_parse (parser))
{
y = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY);
if (y == NULL)
{
_gtk_css_value_unref (x);
return NULL;
}
}
else
{
y = _gtk_css_value_ref (x);
}
return _gtk_css_position_value_new (x, y);
}
double double
_gtk_css_position_value_get_x (const GtkCssValue *position, _gtk_css_position_value_get_x (const GtkCssValue *position,
double one_hundred_percent) double one_hundred_percent)

View File

@ -29,11 +29,12 @@ GtkCssValue * _gtk_css_position_value_new (GtkCssValue *x
GtkCssValue *y); GtkCssValue *y);
GtkCssValue * _gtk_css_position_value_parse (GtkCssParser *parser); GtkCssValue * _gtk_css_position_value_parse (GtkCssParser *parser);
GtkCssValue * _gtk_css_position_value_try_parse (GtkCssParser *parser); GtkCssValue * _gtk_css_position_value_try_parse (GtkCssParser *parser);
GtkCssValue * gtk_css_position_value_parse_spacing (GtkCssParser *parser);
double _gtk_css_position_value_get_x (const GtkCssValue *position, double _gtk_css_position_value_get_x (const GtkCssValue *position,
double one_hundred_percent); double one_hundred_percent);
double _gtk_css_position_value_get_y (const GtkCssValue *position, double _gtk_css_position_value_get_y (const GtkCssValue *position,
double one_hundred_percent); double one_hundred_percent);
G_END_DECLS G_END_DECLS

View File

@ -562,6 +562,13 @@ transform_value_parse (GtkCssStyleProperty *property,
return _gtk_css_transform_value_parse (parser); return _gtk_css_transform_value_parse (parser);
} }
static GtkCssValue *
border_spacing_value_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
{
return gtk_css_position_value_parse_spacing (parser);
}
static GtkCssValue * static GtkCssValue *
border_corner_radius_value_parse (GtkCssStyleProperty *property, border_corner_radius_value_parse (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
@ -1448,6 +1455,16 @@ _gtk_css_style_property_init_properties (void)
NULL, NULL,
_gtk_css_transform_value_new_none ()); _gtk_css_transform_value_new_none ());
gtk_css_style_property_register ("border-spacing",
GTK_CSS_PROPERTY_BORDER_SPACING,
G_TYPE_NONE,
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE,
border_spacing_value_parse,
NULL,
_gtk_css_position_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("min-width", gtk_css_style_property_register ("min-width",
GTK_CSS_PROPERTY_MIN_WIDTH, GTK_CSS_PROPERTY_MIN_WIDTH,
G_TYPE_INT, G_TYPE_INT,

View File

@ -207,6 +207,7 @@ enum { /*< skip >*/
GTK_CSS_PROPERTY_ICON_SHADOW, GTK_CSS_PROPERTY_ICON_SHADOW,
GTK_CSS_PROPERTY_ICON_STYLE, GTK_CSS_PROPERTY_ICON_STYLE,
GTK_CSS_PROPERTY_ICON_TRANSFORM, GTK_CSS_PROPERTY_ICON_TRANSFORM,
GTK_CSS_PROPERTY_BORDER_SPACING,
GTK_CSS_PROPERTY_MIN_WIDTH, GTK_CSS_PROPERTY_MIN_WIDTH,
GTK_CSS_PROPERTY_MIN_HEIGHT, GTK_CSS_PROPERTY_MIN_HEIGHT,
GTK_CSS_PROPERTY_TRANSITION_PROPERTY, GTK_CSS_PROPERTY_TRANSITION_PROPERTY,