Commit c7e9489e authored by Benjamin Otte's avatar Benjamin Otte

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.
parent ac215ffc
......@@ -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 */
}
}
......@@ -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 *
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment