summaryrefslogtreecommitdiff
path: root/gtk/gtkcsswidgetnode.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2015-01-25 02:40:40 +0100
committerBenjamin Otte <otte@redhat.com>2015-03-18 15:23:29 +0100
commit7bafb63ec3b04764f8986b82f1a6c6e1e73eea3b (patch)
tree96ae95411828e31923c024347b3034b99d92698b /gtk/gtkcsswidgetnode.c
parentd79a44c1afaea14cd8442df61631154fe0bdd441 (diff)
downloadgtk+-7bafb63ec3b04764f8986b82f1a6c6e1e73eea3b.tar.gz
cssnode: Handle invalidation
Handle invalidation of node inside the CssNode code, don't do it in the stylecontext.
Diffstat (limited to 'gtk/gtkcsswidgetnode.c')
-rw-r--r--gtk/gtkcsswidgetnode.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gtk/gtkcsswidgetnode.c b/gtk/gtkcsswidgetnode.c
index c9e156e619..0a4b17bbcc 100644
--- a/gtk/gtkcsswidgetnode.c
+++ b/gtk/gtkcsswidgetnode.c
@@ -19,10 +19,25 @@
#include "gtkcsswidgetnodeprivate.h"
#include "gtkprivate.h"
+#include "gtkstylecontextprivate.h"
#include "gtkwidgetprivate.h"
G_DEFINE_TYPE (GtkCssWidgetNode, gtk_css_widget_node, GTK_TYPE_CSS_NODE)
+static void
+gtk_css_widget_node_invalidate (GtkCssNode *node,
+ GtkCssChange change)
+{
+ GtkCssWidgetNode *widget_node = GTK_CSS_WIDGET_NODE (node);
+ GtkStyleContext *context;
+
+ if (widget_node->widget == NULL)
+ return;
+
+ context = gtk_widget_get_style_context (widget_node->widget);
+ _gtk_style_context_invalidate_root_node (context, change);
+}
+
static GtkWidgetPath *
gtk_css_widget_node_create_widget_path (GtkCssNode *node)
{
@@ -62,6 +77,7 @@ gtk_css_widget_node_class_init (GtkCssWidgetNodeClass *klass)
{
GtkCssNodeClass *node_class = GTK_CSS_NODE_CLASS (klass);
+ node_class->invalidate = gtk_css_widget_node_invalidate;
node_class->create_widget_path = gtk_css_widget_node_create_widget_path;
node_class->get_widget_path = gtk_css_widget_node_get_widget_path;
}