[gtk+/win32-theme: 5/6] make _gtk_style_property_resolve copy the result to an output value



commit 5f2f3d331a2e20a406b919026019c26cd46c8847
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Nov 15 17:15:49 2011 +0100

    make _gtk_style_property_resolve copy the result to an output value
    
    This is preparation for allowing it to return a newly created
    value, rather than just copying one.

 gtk/gtkstyleproperties.c      |    5 +----
 gtk/gtkstyleproperty.c        |   10 +++++++---
 gtk/gtkstylepropertyprivate.h |    3 ++-
 3 files changed, 10 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtkstyleproperties.c b/gtk/gtkstyleproperties.c
index b25f92b..3182802 100644
--- a/gtk/gtkstyleproperties.c
+++ b/gtk/gtkstyleproperties.c
@@ -672,10 +672,7 @@ _gtk_style_properties_get_property (GtkStyleProperties *props,
   g_value_init (value, node->pspec->value_type);
 
   if (val)
-    {
-      _gtk_style_property_resolve (node, props, state, context, val);
-      g_value_copy (val, value);
-    }
+    _gtk_style_property_resolve (node, props, state, context, val, value);
   else if (_gtk_style_property_is_shorthand (node))
     _gtk_style_property_pack (node, props, state, context, value);
   else
diff --git a/gtk/gtkstyleproperty.c b/gtk/gtkstyleproperty.c
index 2ece9b6..1c73d30 100644
--- a/gtk/gtkstyleproperty.c
+++ b/gtk/gtkstyleproperty.c
@@ -2519,19 +2519,20 @@ _gtk_style_property_resolve (const GtkStyleProperty *property,
                              GtkStyleProperties     *props,
                              GtkStateFlags           state,
 			     GtkStylePropertyContext *context,
-                             GValue                 *val)
+                             GValue                 *val,
+			     GValue                 *val_out)
 {
   if (G_VALUE_TYPE (val) == GTK_TYPE_SYMBOLIC_COLOR)
     {
       if (property->pspec->value_type == GDK_TYPE_RGBA)
         {
           if (resolve_color (props, val))
-            return;
+            goto out;
         }
       else if (property->pspec->value_type == GDK_TYPE_COLOR)
         {
           if (resolve_color_rgb (props, val))
-            return;
+            goto out;
         }
       
       g_value_unset (val);
@@ -2559,6 +2560,9 @@ _gtk_style_property_resolve (const GtkStyleProperty *property,
       if (!resolve_shadow (props, val))
         _gtk_style_property_default_value (property, props, state, val);
     }
+
+ out:
+  g_value_copy (val, val_out);
 }
 
 gboolean
diff --git a/gtk/gtkstylepropertyprivate.h b/gtk/gtkstylepropertyprivate.h
index 07994d5..6aa6d59 100644
--- a/gtk/gtkstylepropertyprivate.h
+++ b/gtk/gtkstylepropertyprivate.h
@@ -85,7 +85,8 @@ void                     _gtk_style_property_resolve       (const GtkStyleProper
                                                             GtkStyleProperties     *properties,
                                                             GtkStateFlags           state,
 							    GtkStylePropertyContext *context,
-                                                            GValue                 *orig_value);
+                                                            GValue                 *orig_value,
+                                                            GValue                 *out_value);
 
 gboolean                 _gtk_style_property_is_shorthand  (const GtkStyleProperty *property);
 GParameter *             _gtk_style_property_unpack        (const GtkStyleProperty *property,



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