summaryrefslogtreecommitdiff
path: root/gtk/gtkcssnode.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2015-01-31 16:30:05 +0100
committerBenjamin Otte <otte@redhat.com>2015-03-18 15:23:29 +0100
commit03ac5f310bc6b11907d1c4bda152b0191fad7661 (patch)
tree2ab6497069f61a0e019560b81d026887f7fa7da0 /gtk/gtkcssnode.c
parent6dc6af674c8c120192c15a943819fe2a152ddfe9 (diff)
downloadgtk+-03ac5f310bc6b11907d1c4bda152b0191fad7661.tar.gz
cssnode: Add gtk_style_context_get_style_provider()
... and use it when looking up properties.
Diffstat (limited to 'gtk/gtkcssnode.c')
-rw-r--r--gtk/gtkcssnode.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c
index 9ff83aa6f7..1f846d9341 100644
--- a/gtk/gtkcssnode.c
+++ b/gtk/gtkcssnode.c
@@ -21,6 +21,7 @@
#include "gtkcsstransientnodeprivate.h"
#include "gtkdebug.h"
+#include "gtksettingsprivate.h"
G_DEFINE_TYPE (GtkCssNode, gtk_css_node, G_TYPE_OBJECT)
@@ -96,6 +97,15 @@ gtk_css_node_real_get_widget_path (GtkCssNode *cssnode)
return NULL;
}
+static GtkStyleProviderPrivate *
+gtk_css_node_real_get_style_provider (GtkCssNode *cssnode)
+{
+ if (cssnode->parent)
+ return gtk_css_node_get_style_provider (cssnode->parent);
+
+ return GTK_STYLE_PROVIDER_PRIVATE (_gtk_settings_get_style_cascade (gtk_settings_get_default (), 1));
+}
+
static void
gtk_css_node_class_init (GtkCssNodeClass *klass)
{
@@ -109,6 +119,7 @@ gtk_css_node_class_init (GtkCssNodeClass *klass)
klass->set_invalid = gtk_css_node_real_set_invalid;
klass->create_widget_path = gtk_css_node_real_create_widget_path;
klass->get_widget_path = gtk_css_node_real_get_widget_path;
+ klass->get_style_provider = gtk_css_node_real_get_style_provider;
}
static void
@@ -424,3 +435,8 @@ gtk_css_node_get_widget_path (GtkCssNode *cssnode)
return GTK_CSS_NODE_GET_CLASS (cssnode)->get_widget_path (cssnode);
}
+GtkStyleProviderPrivate *
+gtk_css_node_get_style_provider (GtkCssNode *cssnode)
+{
+ return GTK_CSS_NODE_GET_CLASS (cssnode)->get_style_provider (cssnode);
+}