cssselector: Redo change verification

Instead of walking the selector tree, we walk the selectors.
This commit is contained in:
Benjamin Otte
2014-12-09 03:21:13 +01:00
parent 5885950018
commit e2dddd62cf
3 changed files with 10 additions and 19 deletions

View File

@ -1646,7 +1646,7 @@ verify_tree_get_change_results (GtkCssProvider *provider,
ruleset = tree_rules->pdata[i]; ruleset = tree_rules->pdata[i];
verify_change |= _gtk_css_selector_tree_match_get_change (ruleset->selector_match); verify_change |= _gtk_css_selector_get_change (ruleset->selector);
} }
if (change != verify_change) if (change != verify_change)

View File

@ -1744,23 +1744,6 @@ _gtk_css_selector_to_string (const GtkCssSelector *selector)
return g_string_free (string, FALSE); return g_string_free (string, FALSE);
} }
GtkCssChange
_gtk_css_selector_tree_match_get_change (const GtkCssSelectorTree *tree)
{
GtkCssChange change = 0;
update_type_references ();
while (tree)
{
change = tree->selector.class->get_change (&tree->selector, change);
tree = gtk_css_selector_tree_get_parent (tree);
}
return change;
}
static gboolean static gboolean
gtk_css_selector_foreach_match (const GtkCssSelector *selector, gtk_css_selector_foreach_match (const GtkCssSelector *selector,
const GtkCssMatcher *matcher, const GtkCssMatcher *matcher,
@ -1843,6 +1826,14 @@ _gtk_css_selector_compare (const GtkCssSelector *a,
return a_elements - b_elements; return a_elements - b_elements;
} }
GtkCssChange
_gtk_css_selector_get_change (const GtkCssSelector *selector)
{
if (selector == NULL)
return 0;
return selector->class->get_change (selector, _gtk_css_selector_get_change (gtk_css_selector_previous (selector)));
}
/******************** SelectorTree handling *****************/ /******************** SelectorTree handling *****************/

View File

@ -36,6 +36,7 @@ void _gtk_css_selector_print (const GtkCssSelector *sel
gboolean _gtk_css_selector_matches (const GtkCssSelector *selector, gboolean _gtk_css_selector_matches (const GtkCssSelector *selector,
const GtkCssMatcher *matcher); const GtkCssMatcher *matcher);
GtkCssChange _gtk_css_selector_get_change (const GtkCssSelector *selector);
int _gtk_css_selector_compare (const GtkCssSelector *a, int _gtk_css_selector_compare (const GtkCssSelector *a,
const GtkCssSelector *b); const GtkCssSelector *b);
@ -46,7 +47,6 @@ GtkCssChange _gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *
const GtkCssMatcher *matcher); const GtkCssMatcher *matcher);
void _gtk_css_selector_tree_match_print (const GtkCssSelectorTree *tree, void _gtk_css_selector_tree_match_print (const GtkCssSelectorTree *tree,
GString *str); GString *str);
GtkCssChange _gtk_css_selector_tree_match_get_change (const GtkCssSelectorTree *tree);
GtkCssSelectorTreeBuilder *_gtk_css_selector_tree_builder_new (void); GtkCssSelectorTreeBuilder *_gtk_css_selector_tree_builder_new (void);