summaryrefslogtreecommitdiff
path: root/gtk/gtkcssnode.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2015-02-22 23:28:04 +0100
committerBenjamin Otte <otte@redhat.com>2015-03-18 15:23:32 +0100
commit092ff983f734776e31bcfa033c820e8c1f7f1ee3 (patch)
tree2d19b4726cac3651a1186e1e98877b637464a9f3 /gtk/gtkcssnode.c
parentdf51bc836b24a67a2238a8ae7c2876a21c91a604 (diff)
downloadgtk+-092ff983f734776e31bcfa033c820e8c1f7f1ee3.tar.gz
cssnode: Merge the 2 places that compute styles
Now that the widget node recomputes styles on update_style() we can just call it during validate(). That way, we don't need the widget node to manually compute its style.
Diffstat (limited to 'gtk/gtkcssnode.c')
-rw-r--r--gtk/gtkcssnode.c37
1 files changed, 11 insertions, 26 deletions
diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c
index 0aaf64d56f..8f089e04ce 100644
--- a/gtk/gtkcssnode.c
+++ b/gtk/gtkcssnode.c
@@ -35,7 +35,7 @@ gtk_css_node_get_style_provider_or_null (GtkCssNode *cssnode)
return GTK_CSS_NODE_GET_CLASS (cssnode)->get_style_provider (cssnode);
}
-void
+static void
gtk_css_node_set_invalid (GtkCssNode *node,
gboolean invalid)
{
@@ -295,13 +295,9 @@ gtk_css_node_real_dequeue_validate (GtkCssNode *node)
{
}
-static GtkCssStyle *
-gtk_css_node_real_validate (GtkCssNode *cssnode,
- GtkCssStyle *current_style,
- gint64 timestamp,
- GtkCssChange change)
+static void
+gtk_css_node_real_validate (GtkCssNode *node)
{
- return NULL;
}
gboolean
@@ -876,8 +872,6 @@ gtk_css_node_validate_internal (GtkCssNode *cssnode,
gint64 timestamp)
{
GtkCssNode *child;
- GtkCssStyle *new_style;
- gboolean changed;
/* If you run your application with
* GTK_DEBUG=no-css-cache
@@ -894,27 +888,18 @@ gtk_css_node_validate_internal (GtkCssNode *cssnode,
if (G_UNLIKELY (gtk_get_debug_flags () & GTK_DEBUG_NO_CSS_CACHE))
cssnode->pending_changes |= GTK_CSS_CHANGE_ANY;
- if (!cssnode->invalid && cssnode->pending_changes == 0)
+ if (!cssnode->invalid)
return;
- gtk_css_node_set_invalid (cssnode, FALSE);
+ gtk_css_node_ensure_style (cssnode, timestamp);
- cssnode->style_is_invalid = FALSE;
-
- new_style = GTK_CSS_NODE_GET_CLASS (cssnode)->validate (cssnode, cssnode->style, timestamp, cssnode->pending_changes);
- if (new_style)
- {
- gtk_css_node_set_style (cssnode, new_style);
- g_object_unref (new_style);
- changed = TRUE;
- }
- else
- {
- changed = FALSE;
- }
+ /* need to set to FALSE then to TRUE here to make it chain up */
+ gtk_css_node_set_invalid (cssnode, FALSE);
+ if (GTK_IS_CSS_ANIMATED_STYLE (cssnode->style) &&
+ !gtk_css_animated_style_is_static (GTK_CSS_ANIMATED_STYLE (cssnode->style)))
+ gtk_css_node_set_invalid (cssnode, TRUE);
- gtk_css_node_propagate_pending_changes (cssnode, changed);
- cssnode->pending_changes = 0;
+ GTK_CSS_NODE_GET_CLASS (cssnode)->validate (cssnode);
for (child = gtk_css_node_get_first_child (cssnode);
child;