css: add shorthand text-decoration property
authorPaolo Borelli <pborelli@gnome.org>
Sun, 5 Jul 2015 21:24:49 +0000 (23:24 +0200)
committerPaolo Borelli <pborelli@gnome.org>
Sun, 5 Jul 2015 22:04:06 +0000 (00:04 +0200)
Note that for now we take into account only text-decoration-line
and text-decoration-color

gtk/gtkcssshorthandpropertyimpl.c

index 9bc780dc6eac8884a2e25645a8a15ab42fa5e1c6..61afcc69467186e4ca2c2a298f7c33b11b977706 100644 (file)
@@ -823,6 +823,38 @@ parse_animation (GtkCssShorthandProperty  *shorthand,
   return TRUE;
 }
 
+static gboolean
+parse_text_decoration (GtkCssShorthandProperty  *shorthand,
+                       GtkCssValue             **values,
+                       GtkCssParser             *parser)
+{
+  do
+  {
+    if (values[0] == NULL &&
+        (values[0] = _gtk_css_text_decoration_line_value_try_parse (parser)))
+      {
+        if (values[0] == NULL)
+          return FALSE;
+      }
+    else if (values[1] == NULL)
+      {
+        values[1] = _gtk_css_color_value_parse (parser);
+        if (values[1] == NULL)
+          return FALSE;
+      }
+    else
+      {
+        /* We parsed and there's still stuff left?
+         * Pretend we didn't notice and let the normal code produce
+         * a 'junk at end of value' error */
+        break;
+      }
+  }
+  while (!value_is_done_parsing (parser));
+
+  return TRUE;
+}
+
 static gboolean
 parse_all (GtkCssShorthandProperty  *shorthand,
            GtkCssValue             **values,
@@ -1170,6 +1202,7 @@ _gtk_css_shorthand_property_init_properties (void)
   const char *transition_subproperties[] = { "transition-property", "transition-duration", "transition-delay", "transition-timing-function", NULL };
   const char *animation_subproperties[] = { "animation-name", "animation-iteration-count", "animation-duration", "animation-delay", 
                                             "animation-timing-function", "animation-direction", "animation-fill-mode", NULL };
+  const char *text_decoration_subproperties[] = { "text-decoration-line", "text-decoration-color", NULL };
 
   const char **all_subproperties;
 
@@ -1281,6 +1314,12 @@ _gtk_css_shorthand_property_init_properties (void)
                                           parse_animation,
                                           NULL,
                                           NULL);
+  _gtk_css_shorthand_property_register   ("text-decoration",
+                                          G_TYPE_NONE,
+                                          text_decoration_subproperties,
+                                          parse_text_decoration,
+                                          NULL,
+                                          NULL);
 
   all_subproperties = get_all_subproperties ();
   _gtk_css_shorthand_property_register   ("all",