[gtk+/wip/cssstyle: 5/27] stylecontext: Use a static style when saved
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/cssstyle: 5/27] stylecontext: Use a static style when saved
- Date: Wed, 24 Dec 2014 02:19:47 +0000 (UTC)
commit b5c71ddaee71cf570a3bbcdb93aab29a02bbc339
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 4f83c71..7758e91 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"
@@ -668,7 +670,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)
@@ -692,7 +694,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);
@@ -722,11 +724,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));
@@ -735,11 +737,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;
@@ -760,7 +765,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]