[gtk+] css: Parse text-shadow values properly
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] css: Parse text-shadow values properly
- Date: Mon, 9 Jun 2014 23:09:59 +0000 (UTC)
commit 3759190c2674aebd6b40ff5f337b155073ed5b78
Author: Benjamin Otte <otte redhat com>
Date: Tue Jun 10 01:04:55 2014 +0200
css: Parse text-shadow values properly
We used to accept the same syntax for text-shadow and icon-shadow as
we accept for box-shadow. However, box-shadow does accept a spread and
the inset keyword while the others should not.
gtk/gtkcssshadowsvalue.c | 5 +++--
gtk/gtkcssshadowsvalueprivate.h | 3 ++-
gtk/gtkcssshadowvalue.c | 10 ++++++----
gtk/gtkcssshadowvalueprivate.h | 3 ++-
gtk/gtkcssstylepropertyimpl.c | 11 +++++++++--
5 files changed, 22 insertions(+), 10 deletions(-)
---
diff --git a/gtk/gtkcssshadowsvalue.c b/gtk/gtkcssshadowsvalue.c
index 1107b2f..6aafa92 100644
--- a/gtk/gtkcssshadowsvalue.c
+++ b/gtk/gtkcssshadowsvalue.c
@@ -213,7 +213,8 @@ gtk_css_shadows_value_new (GtkCssValue **values,
}
GtkCssValue *
-_gtk_css_shadows_value_parse (GtkCssParser *parser)
+_gtk_css_shadows_value_parse (GtkCssParser *parser,
+ gboolean box_shadow_mode)
{
GtkCssValue *value, *result;
GPtrArray *values;
@@ -224,7 +225,7 @@ _gtk_css_shadows_value_parse (GtkCssParser *parser)
values = g_ptr_array_new ();
do {
- value = _gtk_css_shadow_value_parse (parser);
+ value = _gtk_css_shadow_value_parse (parser, box_shadow_mode);
if (value == NULL)
{
diff --git a/gtk/gtkcssshadowsvalueprivate.h b/gtk/gtkcssshadowsvalueprivate.h
index 5f2bdbb..4713b86 100644
--- a/gtk/gtkcssshadowsvalueprivate.h
+++ b/gtk/gtkcssshadowsvalueprivate.h
@@ -31,7 +31,8 @@
G_BEGIN_DECLS
GtkCssValue * _gtk_css_shadows_value_new_none (void);
-GtkCssValue * _gtk_css_shadows_value_parse (GtkCssParser *parser);
+GtkCssValue * _gtk_css_shadows_value_parse (GtkCssParser *parser,
+ gboolean box_shadow_mode);
gboolean _gtk_css_shadows_value_is_none (const GtkCssValue *shadows);
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c
index 6dcd2dd..fead494 100644
--- a/gtk/gtkcssshadowvalue.c
+++ b/gtk/gtkcssshadowvalue.c
@@ -209,7 +209,8 @@ value_is_done_parsing (GtkCssParser *parser)
}
GtkCssValue *
-_gtk_css_shadow_value_parse (GtkCssParser *parser)
+_gtk_css_shadow_value_parse (GtkCssParser *parser,
+ gboolean box_shadow_mode)
{
enum {
HOFFSET,
@@ -223,7 +224,8 @@ _gtk_css_shadow_value_parse (GtkCssParser *parser)
gboolean inset;
guint i;
- inset = _gtk_css_parser_try (parser, "inset", TRUE);
+ if (box_shadow_mode)
+ inset = _gtk_css_parser_try (parser, "inset", TRUE);
do
{
@@ -254,7 +256,7 @@ _gtk_css_shadow_value_parse (GtkCssParser *parser)
else
values[RADIUS] = _gtk_css_number_value_new (0.0, GTK_CSS_PX);
- if (_gtk_css_parser_has_number (parser))
+ if (box_shadow_mode && _gtk_css_parser_has_number (parser))
{
values[SPREAD] = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH
@@ -265,7 +267,7 @@ _gtk_css_shadow_value_parse (GtkCssParser *parser)
else
values[SPREAD] = _gtk_css_number_value_new (0.0, GTK_CSS_PX);
}
- else if (!inset && _gtk_css_parser_try (parser, "inset", TRUE))
+ else if (!inset && box_shadow_mode && _gtk_css_parser_try (parser, "inset", TRUE))
{
if (values[HOFFSET] == NULL)
goto fail;
diff --git a/gtk/gtkcssshadowvalueprivate.h b/gtk/gtkcssshadowvalueprivate.h
index e46b303..1e5eb22 100644
--- a/gtk/gtkcssshadowvalueprivate.h
+++ b/gtk/gtkcssshadowvalueprivate.h
@@ -32,7 +32,8 @@ G_BEGIN_DECLS
GtkCssValue * _gtk_css_shadow_value_new_for_transition (GtkCssValue *target);
-GtkCssValue * _gtk_css_shadow_value_parse (GtkCssParser *parser);
+GtkCssValue * _gtk_css_shadow_value_parse (GtkCssParser *parser,
+ gboolean box_shadow_mode);
gboolean _gtk_css_shadow_value_get_inset (const GtkCssValue *shadow);
diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c
index f1acf9a..442c2b4 100644
--- a/gtk/gtkcssstylepropertyimpl.c
+++ b/gtk/gtkcssstylepropertyimpl.c
@@ -583,10 +583,17 @@ bindings_value_assign (GtkCssStyleProperty *property,
}
static GtkCssValue *
+box_shadow_value_parse (GtkCssStyleProperty *property,
+ GtkCssParser *parser)
+{
+ return _gtk_css_shadows_value_parse (parser, TRUE);
+}
+
+static GtkCssValue *
shadow_value_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
{
- return _gtk_css_shadows_value_parse (parser);
+ return _gtk_css_shadows_value_parse (parser, FALSE);
}
static GtkCssValue *
@@ -1014,7 +1021,7 @@ _gtk_css_style_property_init_properties (void)
GTK_CSS_PROPERTY_BOX_SHADOW,
G_TYPE_NONE,
GTK_STYLE_PROPERTY_ANIMATED,
- shadow_value_parse,
+ box_shadow_value_parse,
NULL,
NULL,
_gtk_css_shadows_value_new_none ());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]