Make the superset matcher more exact
When the superset matcher is built from a node matcher, we can make the parent matcher be a superset matchers for the corresponding node, with the same relevant parts. This is more precise than the ANY matcher that we were returning previously.
This commit is contained in:
@@ -469,9 +469,17 @@ static gboolean
|
|||||||
gtk_css_matcher_superset_get_parent (GtkCssMatcher *matcher,
|
gtk_css_matcher_superset_get_parent (GtkCssMatcher *matcher,
|
||||||
const GtkCssMatcher *child)
|
const GtkCssMatcher *child)
|
||||||
{
|
{
|
||||||
_gtk_css_matcher_any_init (matcher);
|
gboolean ret = TRUE;
|
||||||
|
|
||||||
return TRUE;
|
if (child->klass->type == GTK_CSS_MATCHER_TYPE_NODE)
|
||||||
|
{
|
||||||
|
ret = gtk_css_matcher_node_get_parent (matcher, child);
|
||||||
|
matcher->klass = child->klass;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_gtk_css_matcher_any_init (matcher);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -571,6 +579,7 @@ _gtk_css_matcher_superset_init (GtkCssMatcher *matcher,
|
|||||||
}
|
}
|
||||||
|
|
||||||
*klass = GTK_CSS_MATCHER_SUPERSET;
|
*klass = GTK_CSS_MATCHER_SUPERSET;
|
||||||
|
klass->type = subset->klass->type;
|
||||||
|
|
||||||
if (relevant & GTK_CSS_CHANGE_CLASS)
|
if (relevant & GTK_CSS_CHANGE_CLASS)
|
||||||
klass->has_class = subset->klass->has_class;
|
klass->has_class = subset->klass->has_class;
|
||||||
|
|||||||
Reference in New Issue
Block a user