51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
From 69e396ea0ab6e25ebeb87ee55ea11d3a5c376f44 Mon Sep 17 00:00:00 2001
|
|
From: Benjamin Otte <otte@redhat.com>
|
|
Date: Mon, 6 Jul 2015 00:21:03 +0200
|
|
Subject: [PATCH 159/193] cssselector: Report finer granularity for position
|
|
changes
|
|
|
|
---
|
|
gtk/gtkcssselector.c | 26 +++++++++++++++++++++++++-
|
|
1 file changed, 25 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
|
|
index eae014e..6ad744c 100644
|
|
--- a/gtk/gtkcssselector.c
|
|
+++ b/gtk/gtkcssselector.c
|
|
@@ -1036,7 +1036,31 @@ comp_pseudoclass_position (const GtkCssSelector *a,
|
|
return a->position.b - b->position.b;
|
|
}
|
|
|
|
-#define GTK_CSS_CHANGE_PSEUDOCLASS_POSITION GTK_CSS_CHANGE_POSITION
|
|
+static GtkCssChange
|
|
+change_pseudoclass_position (const GtkCssSelector *selector)
|
|
+{
|
|
+ switch (selector->position.type)
|
|
+ {
|
|
+ case POSITION_FORWARD:
|
|
+ if (selector->position.a == 0 && selector->position.b == 1)
|
|
+ return GTK_CSS_CHANGE_FIRST_CHILD;
|
|
+ else
|
|
+ return GTK_CSS_CHANGE_NTH_CHILD;
|
|
+ case POSITION_BACKWARD:
|
|
+ if (selector->position.a == 0 && selector->position.b == 1)
|
|
+ return GTK_CSS_CHANGE_LAST_CHILD;
|
|
+ else
|
|
+ return GTK_CSS_CHANGE_NTH_LAST_CHILD;
|
|
+ case POSITION_ONLY:
|
|
+ return GTK_CSS_CHANGE_FIRST_CHILD | GTK_CSS_CHANGE_LAST_CHILD;
|
|
+ default:
|
|
+ g_assert_not_reached ();
|
|
+ case POSITION_SORTED:
|
|
+ return 0;
|
|
+ }
|
|
+}
|
|
+
|
|
+#define GTK_CSS_CHANGE_PSEUDOCLASS_POSITION change_pseudoclass_position(selector)
|
|
DEFINE_SIMPLE_SELECTOR(pseudoclass_position, PSEUDOCLASS_POSITION, print_pseudoclass_position,
|
|
match_pseudoclass_position, hash_pseudoclass_position, comp_pseudoclass_position,
|
|
FALSE, TRUE, FALSE)
|
|
--
|
|
2.4.5
|
|
|