[gtk+] cssprovider: Add a new setter for rulesets



commit 399a4391031173e754f0218a93ffac0b5ae4d026
Author: Benjamin Otte <otte redhat com>
Date:   Wed May 18 04:30:51 2011 +0200

    cssprovider: Add a new setter for rulesets
    
    We now have set-by-pspec (which is used for normal style properties) and
    set-by-name (which is used by widget properties).

 gtk/gtkcssprovider.c |   21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 2df8104..06eb4e4 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -955,6 +955,14 @@ gtk_css_ruleset_add_style (GtkCssRuleset *ruleset,
   g_hash_table_insert (ruleset->style, name, value);
 }
 
+static void
+gtk_css_ruleset_add (GtkCssRuleset *ruleset,
+                     GParamSpec    *pspec,
+                     GValue        *value)
+{
+  gtk_css_ruleset_add_style (ruleset, g_strdup (pspec->name), value);
+}
+
 static gboolean
 gtk_css_ruleset_matches (GtkCssRuleset *ruleset,
                          GtkWidgetPath *path,
@@ -1944,6 +1952,8 @@ parse_declaration (GtkCssScanner *scanner,
     {
       GValue *val;
 
+      g_free (name);
+
       val = g_slice_new0 (GValue);
       g_value_init (val, pspec->value_type);
 
@@ -1953,20 +1963,20 @@ parse_declaration (GtkCssScanner *scanner,
            * to override other style providers when merged
            */
           g_param_value_set_default (pspec, val);
-          gtk_css_ruleset_add_style (ruleset, name, val);
+          gtk_css_ruleset_add (ruleset, pspec, val);
         }
-      else if (strcmp (name, "gtk-key-bindings") == 0)
+      else if (strcmp (pspec->name, "gtk-key-bindings") == 0)
         {
           /* Private property holding the binding sets */
           resolve_binding_sets (value_str, val);
-          gtk_css_ruleset_add_style (ruleset, name, val);
+          gtk_css_ruleset_add (ruleset, pspec, val);
         }
       else if (parse_func)
         {
           GError *error = NULL;
           
           if ((*parse_func) (value_str, val, &error))
-            gtk_css_ruleset_add_style (ruleset, name, val);
+            gtk_css_ruleset_add (ruleset, pspec, val);
           else
             gtk_css_provider_take_error (scanner->provider, scanner, error);
         }
@@ -1979,13 +1989,12 @@ parse_declaration (GtkCssScanner *scanner,
                                           value_str,
                                           &error))
             {
-              gtk_css_ruleset_add_style (ruleset, name, val);
+              gtk_css_ruleset_add (ruleset, pspec, val);
             }
           else
             {
               g_value_unset (val);
               g_slice_free (GValue, val);
-              g_free (name);
 
               gtk_css_provider_take_error (scanner->provider, scanner, error);
             }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]