cssnode: Make path node create matcher without copying

... the WidgetPath. This uses the functionality introduced in the
previous commits.
This commit is contained in:
Benjamin Otte 2015-02-09 11:29:48 +01:00
parent 2bf7bdd651
commit 76ca9a9181

View File

@ -47,6 +47,22 @@ gtk_css_path_node_invalidate (GtkCssNode *node)
} }
} }
gboolean
gtk_css_path_node_real_init_matcher (GtkCssNode *node,
GtkCssMatcher *matcher,
GtkWidgetPath **path_out)
{
GtkCssPathNode *path_node = GTK_CSS_PATH_NODE (node);
if (path_node->path == NULL ||
gtk_widget_path_length (path_node->path) == 0)
return FALSE;
return _gtk_css_matcher_init (matcher,
path_node->path,
gtk_css_node_get_declaration (node));
}
static GtkWidgetPath * static GtkWidgetPath *
gtk_css_path_node_real_create_widget_path (GtkCssNode *node) gtk_css_path_node_real_create_widget_path (GtkCssNode *node)
{ {
@ -98,6 +114,7 @@ gtk_css_path_node_class_init (GtkCssPathNodeClass *klass)
object_class->finalize = gtk_css_path_node_finalize; object_class->finalize = gtk_css_path_node_finalize;
node_class->invalidate = gtk_css_path_node_invalidate; node_class->invalidate = gtk_css_path_node_invalidate;
node_class->init_matcher = gtk_css_path_node_real_init_matcher;
node_class->create_widget_path = gtk_css_path_node_real_create_widget_path; node_class->create_widget_path = gtk_css_path_node_real_create_widget_path;
node_class->get_widget_path = gtk_css_path_node_real_get_widget_path; node_class->get_widget_path = gtk_css_path_node_real_get_widget_path;
node_class->get_style_provider = gtk_css_path_node_get_style_provider; node_class->get_style_provider = gtk_css_path_node_get_style_provider;