[gtk+] cssselector: Print name and any selector first
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] cssselector: Print name and any selector first
- Date: Tue, 27 Oct 2015 19:18:38 +0000 (UTC)
commit e3ddbc544cef0570b9f6a46e1ad7bec275c99881
Author: Benjamin Otte <otte redhat com>
Date: Tue Oct 27 20:11:08 2015 +0100
cssselector: Print name and any selector first
When printing a "compound selector", make sure the name and universal
selectors are printed at the beginning and class, id, etc. selectors are
printed last.
gtk/gtkcssselector.c | 36 +++++++++++++++++++++++++++++++-----
1 files changed, 31 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
index 3be62ee..a185cd6 100644
--- a/gtk/gtkcssselector.c
+++ b/gtk/gtkcssselector.c
@@ -1700,15 +1700,41 @@ void
_gtk_css_selector_tree_match_print (const GtkCssSelectorTree *tree,
GString *str)
{
- const GtkCssSelectorTree *parent;
+ const GtkCssSelectorTree *iter;
g_return_if_fail (tree != NULL);
- tree->selector.class->print (&tree->selector, str);
+ /* print name and * selector before others */
+ for (iter = tree;
+ iter && iter->selector.class->is_simple;
+ iter = gtk_css_selector_tree_get_parent (iter))
+ {
+ if (iter->selector.class == >K_CSS_SELECTOR_NAME ||
+ iter->selector.class == >K_CSS_SELECTOR_ANY)
+ {
+ iter->selector.class->print (&iter->selector, str);
+ }
+ }
+ /* now print other simple selectors */
+ for (iter = tree;
+ iter && iter->selector.class->is_simple;
+ iter = gtk_css_selector_tree_get_parent (iter))
+ {
+ if (iter->selector.class != >K_CSS_SELECTOR_NAME &&
+ iter->selector.class != >K_CSS_SELECTOR_ANY)
+ {
+ iter->selector.class->print (&iter->selector, str);
+ }
+ }
- parent = gtk_css_selector_tree_get_parent (tree);
- if (parent != NULL)
- _gtk_css_selector_tree_match_print (parent, str);
+ /* now if there's a combinator, print that one */
+ if (iter != NULL)
+ {
+ iter->selector.class->print (&iter->selector, str);
+ tree = gtk_css_selector_tree_get_parent (iter);
+ if (tree)
+ _gtk_css_selector_tree_match_print (tree, str);
+ }
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]