diff options
author | Benjamin Otte <otte@redhat.com> | 2015-02-22 23:28:04 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2015-03-18 15:23:32 +0100 |
commit | 092ff983f734776e31bcfa033c820e8c1f7f1ee3 (patch) | |
tree | 2d19b4726cac3651a1186e1e98877b637464a9f3 /gtk/gtkcssnode.c | |
parent | df51bc836b24a67a2238a8ae7c2876a21c91a604 (diff) | |
download | gtk+-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.c | 37 |
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; |