summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2019-08-22 19:25:22 +0200
committerTimm Bäder <mail@baedert.org>2019-09-09 17:36:24 +0200
commit8d6c5ba90e2b232934c6a6e4441c710fef359786 (patch)
treebae51088a8970398051cab2dbfa5d03b7cf77104
parent629f528f6d7dac00db6a8555c30d246cb4aa1254 (diff)
downloadgtk+-8d6c5ba90e2b232934c6a6e4441c710fef359786.tar.gz
cssstaticstyle: Compute initial/inherit values directly
-rw-r--r--gtk/gtkcssinitialvalue.c14
-rw-r--r--gtk/gtkcssinitialvalueprivate.h4
-rw-r--r--gtk/gtkcssstaticstyle.c17
3 files changed, 26 insertions, 9 deletions
diff --git a/gtk/gtkcssinitialvalue.c b/gtk/gtkcssinitialvalue.c
index db479cfabc..258d9f604d 100644
--- a/gtk/gtkcssinitialvalue.c
+++ b/gtk/gtkcssinitialvalue.c
@@ -37,7 +37,7 @@ gtk_css_value_initial_free (GtkCssValue *value)
g_assert_not_reached ();
}
-GtkCssValue *
+static GtkCssValue *
gtk_css_value_initial_compute (GtkCssValue *value,
guint property_id,
GtkStyleProvider *provider,
@@ -124,3 +124,15 @@ _gtk_css_initial_value_get (void)
{
return &initial;
}
+GtkCssValue *
+_gtk_css_initial_value_new_compute (guint property_id,
+ GtkStyleProvider *provider,
+ GtkCssStyle *style,
+ GtkCssStyle *parent_style)
+{
+ return gtk_css_value_initial_compute (NULL,
+ property_id,
+ provider,
+ style,
+ parent_style);
+}
diff --git a/gtk/gtkcssinitialvalueprivate.h b/gtk/gtkcssinitialvalueprivate.h
index 08e501f20f..7bec6bd5a0 100644
--- a/gtk/gtkcssinitialvalueprivate.h
+++ b/gtk/gtkcssinitialvalueprivate.h
@@ -26,9 +26,7 @@ G_BEGIN_DECLS
GtkCssValue * _gtk_css_initial_value_new (void);
GtkCssValue * _gtk_css_initial_value_get (void);
-
-GtkCssValue * gtk_css_value_initial_compute (GtkCssValue *value,
- guint property_id,
+GtkCssValue * _gtk_css_initial_value_new_compute (guint property_id,
GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style);
diff --git a/gtk/gtkcssstaticstyle.c b/gtk/gtkcssstaticstyle.c
index 840281e24e..6cb835d6e2 100644
--- a/gtk/gtkcssstaticstyle.c
+++ b/gtk/gtkcssstaticstyle.c
@@ -218,13 +218,20 @@ gtk_css_static_style_compute_value (GtkCssStaticStyle *style,
{
GtkCssStyleProperty *prop = _gtk_css_style_property_lookup_by_id (id);
- if (_gtk_css_style_property_is_inherit (prop))
- specified = _gtk_css_inherit_value_get ();
+ if (parent_style && _gtk_css_style_property_is_inherit (prop))
+ {
+ /* Just take the style from the parent */
+ value = _gtk_css_value_ref (gtk_css_style_get_value (parent_style, id));
+ }
else
- specified = _gtk_css_initial_value_get ();
+ {
+ value = _gtk_css_initial_value_new_compute (id, provider, (GtkCssStyle *)style, parent_style);
+ }
+ }
+ else
+ {
+ value = _gtk_css_value_compute (specified, id, provider, (GtkCssStyle *)style, parent_style);
}
-
- value = _gtk_css_value_compute (specified, id, provider, (GtkCssStyle *)style, parent_style);
gtk_css_static_style_set_value (style, id, value, section);
}