cssselector: Redo change verification
Instead of walking the selector tree, we walk the selectors.
This commit is contained in:
@ -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)
|
||||||
|
@ -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 *****************/
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
Reference in New Issue
Block a user