[gtk+] css: Add "border-spacing" CSS property
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] css: Add "border-spacing" CSS property
- Date: Sat, 10 Dec 2016 03:33:13 +0000 (UTC)
commit d7148a47182e0b0ca286243101d3774c6b3d4be5
Author: Benjamin Otte <otte redhat com>
Date: Sat Dec 10 03:26:24 2016 +0100
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.
gtk/gtkcsspositionvalue.c | 26 ++++++++++++++++++++++++++
gtk/gtkcsspositionvalueprivate.h | 5 +++--
gtk/gtkcssstylepropertyimpl.c | 17 +++++++++++++++++
gtk/gtkcsstypesprivate.h | 1 +
4 files changed, 47 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkcsspositionvalue.c b/gtk/gtkcsspositionvalue.c
index 9102b16..62ecc68 100644
--- a/gtk/gtkcsspositionvalue.c
+++ b/gtk/gtkcsspositionvalue.c
@@ -291,6 +291,32 @@ _gtk_css_position_value_try_parse (GtkCssParser *parser)
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
_gtk_css_position_value_get_x (const GtkCssValue *position,
double one_hundred_percent)
diff --git a/gtk/gtkcsspositionvalueprivate.h b/gtk/gtkcsspositionvalueprivate.h
index d1d113b..fc87fbc 100644
--- a/gtk/gtkcsspositionvalueprivate.h
+++ b/gtk/gtkcsspositionvalueprivate.h
@@ -29,11 +29,12 @@ GtkCssValue * _gtk_css_position_value_new (GtkCssValue *x
GtkCssValue *y);
GtkCssValue * _gtk_css_position_value_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 one_hundred_percent);
+ double one_hundred_percent);
double _gtk_css_position_value_get_y (const GtkCssValue *position,
- double one_hundred_percent);
+ double one_hundred_percent);
G_END_DECLS
diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c
index 3571d68..d781d51 100644
--- a/gtk/gtkcssstylepropertyimpl.c
+++ b/gtk/gtkcssstylepropertyimpl.c
@@ -563,6 +563,13 @@ transform_value_parse (GtkCssStyleProperty *property,
}
static GtkCssValue *
+border_spacing_value_parse (GtkCssStyleProperty *property,
+ GtkCssParser *parser)
+{
+ return gtk_css_position_value_parse_spacing (parser);
+}
+
+static GtkCssValue *
border_corner_radius_value_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
{
@@ -1448,6 +1455,16 @@ _gtk_css_style_property_init_properties (void)
NULL,
_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_PROPERTY_MIN_WIDTH,
G_TYPE_INT,
diff --git a/gtk/gtkcsstypesprivate.h b/gtk/gtkcsstypesprivate.h
index bcc1dc0..644f007 100644
--- a/gtk/gtkcsstypesprivate.h
+++ b/gtk/gtkcsstypesprivate.h
@@ -207,6 +207,7 @@ enum { /*< skip >*/
GTK_CSS_PROPERTY_ICON_SHADOW,
GTK_CSS_PROPERTY_ICON_STYLE,
GTK_CSS_PROPERTY_ICON_TRANSFORM,
+ GTK_CSS_PROPERTY_BORDER_SPACING,
GTK_CSS_PROPERTY_MIN_WIDTH,
GTK_CSS_PROPERTY_MIN_HEIGHT,
GTK_CSS_PROPERTY_TRANSITION_PROPERTY,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]