[gtk+/wip/cssstyle: 5/30] stylecontext: Use a static style when saved



commit 9ea113ac2bb9ef1ec19bdd2dd9a1d7e3cc8e50df
Author: Benjamin Otte <otte redhat com>
Date:   Sun Oct 26 19:38:38 2014 +0100

    stylecontext: Use a static style when saved
    
    The only style that is animated is the style of the unsaved primary
    node. So there's no need to create animated style objects for the other
    ones.
    
    There is a bunch of ugliness in the code currently. Further commits are
    expected to fix them.

 gtk/gtkcsslookup.c        |   35 ++++++++++++++++++++++++-----------
 gtk/gtkcsslookupprivate.h |    4 ++--
 gtk/gtkstylecontext.c     |   17 +++++++++++------
 3 files changed, 37 insertions(+), 19 deletions(-)
---
diff --git a/gtk/gtkcsslookup.c b/gtk/gtkcsslookup.c
index 0e2a952..0d0920f 100644
--- a/gtk/gtkcsslookup.c
+++ b/gtk/gtkcsslookup.c
@@ -19,9 +19,11 @@
 
 #include "gtkcsslookupprivate.h"
 
+#include "gtkcssanimatedstyleprivate.h"
+#include "gtkcssstaticstyleprivate.h"
+#include "gtkcssstylepropertyprivate.h"
 #include "gtkcsstypesprivate.h"
 #include "gtkprivatetypebuiltins.h"
-#include "gtkcssstylepropertyprivate.h"
 
 GtkCssLookup *
 _gtk_css_lookup_new (const GtkBitmask *relevant)
@@ -106,15 +108,15 @@ void
 _gtk_css_lookup_resolve (GtkCssLookup            *lookup,
                          GtkStyleProviderPrivate *provider,
                         int                      scale,
-                         GtkCssAnimatedStyle     *style,
+                         GtkCssStyle             *style,
                          GtkCssStyle             *parent_style)
 {
   guint i, n;
 
   g_return_if_fail (lookup != NULL);
   g_return_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider));
-  g_return_if_fail (GTK_IS_CSS_ANIMATED_STYLE (style));
-  g_return_if_fail (parent_style == NULL || GTK_IS_CSS_ANIMATED_STYLE (parent_style));
+  g_return_if_fail (GTK_IS_CSS_STYLE (style));
+  g_return_if_fail (parent_style == NULL || GTK_IS_CSS_STYLE (parent_style));
 
   n = _gtk_css_style_property_get_n_properties ();
 
@@ -122,13 +124,24 @@ _gtk_css_lookup_resolve (GtkCssLookup            *lookup,
     {
       if (lookup->values[i].value ||
           _gtk_bitmask_get (lookup->missing, i))
-        gtk_css_animated_style_compute_value (style,
-                                              provider,
-                                              scale,
-                                              parent_style,
-                                              i,
-                                              lookup->values[i].value,
-                                              lookup->values[i].section);
+        {
+          if (GTK_IS_CSS_ANIMATED_STYLE (style))
+            gtk_css_animated_style_compute_value (GTK_CSS_ANIMATED_STYLE (style),
+                                                  provider,
+                                                  scale,
+                                                  parent_style,
+                                                  i,
+                                                  lookup->values[i].value,
+                                                  lookup->values[i].section);
+          else
+            gtk_css_static_style_compute_value (GTK_CSS_STATIC_STYLE (style),
+                                                provider,
+                                                scale,
+                                                parent_style,
+                                                i,
+                                                lookup->values[i].value,
+                                                lookup->values[i].section);
+        }
       /* else not a relevant property */
     }
 }
diff --git a/gtk/gtkcsslookupprivate.h b/gtk/gtkcsslookupprivate.h
index 2b53e4a..2b0c021 100644
--- a/gtk/gtkcsslookupprivate.h
+++ b/gtk/gtkcsslookupprivate.h
@@ -20,7 +20,7 @@
 
 #include <glib-object.h>
 #include "gtk/gtkbitmaskprivate.h"
-#include "gtk/gtkcssanimatedstyleprivate.h"
+#include "gtk/gtkcssstyleprivate.h"
 #include "gtk/gtkcsssection.h"
 
 
@@ -51,7 +51,7 @@ void                    _gtk_css_lookup_set                     (GtkCssLookup
 void                    _gtk_css_lookup_resolve                 (GtkCssLookup               *lookup,
                                                                  GtkStyleProviderPrivate    *provider,
                                                                 int                         scale,
-                                                                 GtkCssAnimatedStyle        *style,
+                                                                 GtkCssStyle                *style,
                                                                  GtkCssStyle                *parent_style);
 
 static inline const GtkBitmask *
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 479bf14..2b26273 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -24,6 +24,7 @@
 
 #include "gtkstylecontextprivate.h"
 #include "gtkcontainerprivate.h"
+#include "gtkcssanimatedstyleprivate.h"
 #include "gtkcsscolorvalueprivate.h"
 #include "gtkcsscornervalueprivate.h"
 #include "gtkcssenumvalueprivate.h"
@@ -33,6 +34,7 @@
 #include "gtkcssnumbervalueprivate.h"
 #include "gtkcssrgbavalueprivate.h"
 #include "gtkcssshadowsvalueprivate.h"
+#include "gtkcssstaticstyleprivate.h"
 #include "gtkcssstylepropertyprivate.h"
 #include "gtkcsstransformvalueprivate.h"
 #include "gtkdebug.h"
@@ -680,7 +682,7 @@ create_query_path (GtkStyleContext             *context,
 
 static void
 build_properties (GtkStyleContext             *context,
-                  GtkCssStyle        *values,
+                  GtkCssStyle                 *style,
                   const GtkCssNodeDeclaration *decl,
                   const GtkBitmask            *relevant_changes,
                   GtkCssChange                *out_change)
@@ -704,7 +706,7 @@ build_properties (GtkStyleContext             *context,
   _gtk_css_lookup_resolve (lookup, 
                            GTK_STYLE_PROVIDER_PRIVATE (priv->cascade),
                           priv->scale,
-                           GTK_CSS_ANIMATED_STYLE (values),
+                           style,
                            priv->parent ? style_values_lookup (priv->parent) : NULL);
 
   _gtk_css_lookup_free (lookup);
@@ -734,11 +736,11 @@ style_values_lookup (GtkStyleContext *context)
       return values;
     }
 
-  values = gtk_css_animated_style_new ();
 
-  style_info_set_values (info, values);
   if (gtk_style_context_is_saved (context))
     {
+<<<<<<< HEAD
+      values = gtk_css_static_style_new ();
       g_hash_table_insert (priv->style_values,
                            gtk_css_node_declaration_ref (info->decl),
                            g_object_ref (values));
@@ -747,11 +749,14 @@ style_values_lookup (GtkStyleContext *context)
     }
   else
     {
+      values = gtk_css_animated_style_new ();
+
       build_properties (context, values, info->decl, NULL, &priv->relevant_changes);
       /* These flags are always relevant */
       priv->relevant_changes |= GTK_CSS_CHANGE_SOURCE;
     }
-
+  
+  style_info_set_values (info, values);
   g_object_unref (values);
 
   return values;
@@ -772,7 +777,7 @@ style_values_lookup_for_state (GtkStyleContext *context,
 
   decl = gtk_css_node_declaration_ref (context->priv->info->decl);
   gtk_css_node_declaration_set_state (&decl, state);
-  values = gtk_css_animated_style_new ();
+  values = gtk_css_static_style_new ();
   build_properties (context, values, decl, NULL, NULL);
   gtk_css_node_declaration_unref (decl);
 


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