css: Add a root to the selector tree

Add a virtual root to the selector tree, and give
it an ANY selector in order to not affect matches.

This will make some of the following changes easier.
This commit is contained in:
Matthias Clasen
2020-01-19 23:29:47 -05:00
parent 8782edbaf3
commit beae47edb1

View File

@@ -2249,9 +2249,18 @@ _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder)
guint len;
GList *l;
GtkCssSelectorRuleSetInfo *info;
gint32 tree_offset;
gint32 offset;
array = g_byte_array_new ();
subdivide_infos (array, builder->infos, GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET);
tree = alloc_tree (array, &tree_offset);
tree->parent_offset = GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET;
tree->sibling_offset = GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET;
tree->matches_offset = GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET;
tree->selector.class = &GTK_CSS_SELECTOR_ANY;
offset = subdivide_infos (array, builder->infos, tree_offset);
get_tree (array, tree_offset)->previous_offset = offset;
len = array->len;
data = g_byte_array_free (array, FALSE);