[gtk+] stylecontext: Use a static style when saved
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] stylecontext: Use a static style when saved
- Date: Wed, 7 Jan 2015 13:55:25 +0000 (UTC)
commit c7e9489e3e9629c394ff3b3de7378bbf09ec92f0
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]