GtkCssChange relevant)
{
g_return_if_fail (subset != NULL);
- g_return_if_fail ((relevant & ~(GTK_CSS_CHANGE_CLASS | GTK_CSS_CHANGE_NAME | GTK_CSS_CHANGE_POSITION | GTK_CSS_CHANGE_STATE | GTK_CSS_CHANGE_HOVER | GTK_CSS_CHANGE_DISABLED | GTK_CSS_CHANGE_BACKDROP)) == 0);
+ g_return_if_fail ((relevant & ~(GTK_CSS_CHANGE_CLASS | GTK_CSS_CHANGE_NAME | GTK_CSS_CHANGE_POSITION | GTK_CSS_CHANGE_STATE | GTK_CSS_CHANGE_HOVER | GTK_CSS_CHANGE_DISABLED | GTK_CSS_CHANGE_BACKDROP | GTK_CSS_CHANGE_SELECTED)) == 0);
matcher->superset.klass = >K_CSS_MATCHER_SUPERSET;
matcher->superset.subset = subset;
change |= GTK_CSS_CHANGE_DISABLED;
if (states & GTK_STATE_FLAG_BACKDROP)
change |= GTK_CSS_CHANGE_BACKDROP;
+ if (states & GTK_STATE_FLAG_SELECTED)
+ change |= GTK_CSS_CHANGE_SELECTED;
if (states & ~(GTK_STATE_FLAG_PRELIGHT |
GTK_STATE_FLAG_INSENSITIVE |
- GTK_STATE_FLAG_BACKDROP))
+ GTK_STATE_FLAG_BACKDROP |
+ GTK_STATE_FLAG_SELECTED))
change |= GTK_CSS_CHANGE_STATE;
gtk_css_node_invalidate (cssnode, change);
FALSE, TRUE, FALSE)
#undef GTK_CSS_CHANGE_PSEUDOCLASS_BACKDROP
+#define GTK_CSS_CHANGE_PSEUDOCLASS_SELECTED GTK_CSS_CHANGE_SELECTED
+DEFINE_SIMPLE_SELECTOR(pseudoclass_selected, PSEUDOCLASS_SELECTED, print_pseudoclass_state,
+ match_pseudoclass_state, hash_pseudoclass_state, comp_pseudoclass_state,
+ FALSE, TRUE, FALSE)
+#undef GTK_CSS_CHANGE_PSEUDOCLASS_SELECTED
+
#define GTK_CSS_CHANGE_PSEUDOCLASS_STATE GTK_CSS_CHANGE_STATE
DEFINE_SIMPLE_SELECTOR(pseudoclass_state, PSEUDOCLASS_STATE, print_pseudoclass_state,
match_pseudoclass_state, hash_pseudoclass_state, comp_pseudoclass_state,
selector = gtk_css_selector_new (negate ? >K_CSS_SELECTOR_NOT_PSEUDOCLASS_BACKDROP
: >K_CSS_SELECTOR_PSEUDOCLASS_BACKDROP,
selector);
+ else if (pseudo_classes[i].state_flag == GTK_STATE_FLAG_SELECTED)
+ selector = gtk_css_selector_new (negate ? >K_CSS_SELECTOR_NOT_PSEUDOCLASS_SELECTED
+ : >K_CSS_SELECTOR_PSEUDOCLASS_SELECTED,
+ selector);
else
selector = gtk_css_selector_new (negate ? >K_CSS_SELECTOR_NOT_PSEUDOCLASS_STATE
: >K_CSS_SELECTOR_PSEUDOCLASS_STATE,
| GTK_CSS_CHANGE_STATE \
| GTK_CSS_CHANGE_HOVER \
| GTK_CSS_CHANGE_DISABLED \
+ | GTK_CSS_CHANGE_SELECTED \
| GTK_CSS_CHANGE_BACKDROP)
#define KEEP_STATES ( ~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_PARENT_STYLE) \
| GTK_CSS_CHANGE_HOVER \
| GTK_CSS_CHANGE_DISABLED \
| GTK_CSS_CHANGE_BACKDROP \
+ | GTK_CSS_CHANGE_SELECTED \
| GTK_CSS_CHANGE_SIBLING_CLASS \
| GTK_CSS_CHANGE_SIBLING_NAME \
| GTK_CSS_CHANGE_SIBLING_ID \
| GTK_CSS_CHANGE_SIBLING_STATE \
| GTK_CSS_CHANGE_SIBLING_HOVER \
| GTK_CSS_CHANGE_SIBLING_DISABLED \
- | GTK_CSS_CHANGE_SIBLING_BACKDROP)
+ | GTK_CSS_CHANGE_SIBLING_BACKDROP \
+ | GTK_CSS_CHANGE_SIBLING_SELECTED)
#define KEEP_STATES (~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_PARENT_STYLE))
{ GTK_CSS_CHANGE_HOVER, "hover" },
{ GTK_CSS_CHANGE_DISABLED, "disabled" },
{ GTK_CSS_CHANGE_BACKDROP, "backdrop" },
+ { GTK_CSS_CHANGE_SELECTED, "selected" },
{ GTK_CSS_CHANGE_SIBLING_CLASS, "sibling-class" },
{ GTK_CSS_CHANGE_SIBLING_NAME, "sibling-name" },
{ GTK_CSS_CHANGE_SIBLING_HOVER, "sibling-hover" },
{ GTK_CSS_CHANGE_SIBLING_DISABLED, "sibling-disabled" },
{ GTK_CSS_CHANGE_SIBLING_BACKDROP, "sibling-backdrop" },
+ { GTK_CSS_CHANGE_SIBLING_SELECTED, "sibling-selected" },
{ GTK_CSS_CHANGE_PARENT_CLASS, "parent-class" },
{ GTK_CSS_CHANGE_PARENT_NAME, "parent-name" },
{ GTK_CSS_CHANGE_PARENT_HOVER, "parent-hover" },
{ GTK_CSS_CHANGE_PARENT_DISABLED, "parent-disabled" },
{ GTK_CSS_CHANGE_PARENT_BACKDROP, "parent-backdrop" },
+ { GTK_CSS_CHANGE_PARENT_SELECTED, "parent-selected" },
{ GTK_CSS_CHANGE_PARENT_SIBLING_CLASS, "parent-sibling-" },
{ GTK_CSS_CHANGE_PARENT_SIBLING_NAME, "parent-sibling-name" },
{ GTK_CSS_CHANGE_PARENT_SIBLING_HOVER, "parent-sibling-hover" },
{ GTK_CSS_CHANGE_PARENT_SIBLING_DISABLED, "parent-sibling-disabled" },
{ GTK_CSS_CHANGE_PARENT_SIBLING_BACKDROP, "parent-sibling-backdrop" },
+ { GTK_CSS_CHANGE_PARENT_SIBLING_SELECTED, "parent-sibling-selected" },
{ GTK_CSS_CHANGE_SOURCE, "source" },
{ GTK_CSS_CHANGE_PARENT_STYLE, "parent-style" },
#define GTK_CSS_CHANGE_HOVER (1ULL << 8)
#define GTK_CSS_CHANGE_DISABLED (1ULL << 9)
#define GTK_CSS_CHANGE_BACKDROP (1ULL << 10)
-
-#define GTK_CSS_CHANGE_SIBLING_SHIFT 11
-
-#define GTK_CSS_CHANGE_SIBLING_CLASS (1ULL << 11)
-#define GTK_CSS_CHANGE_SIBLING_NAME (1ULL << 12)
-#define GTK_CSS_CHANGE_SIBLING_ID (1ULL << 13)
-#define GTK_CSS_CHANGE_SIBLING_FIRST_CHILD (1ULL << 14)
-#define GTK_CSS_CHANGE_SIBLING_LAST_CHILD (1ULL << 15)
-#define GTK_CSS_CHANGE_SIBLING_NTH_CHILD (1ULL << 16)
-#define GTK_CSS_CHANGE_SIBLING_NTH_LAST_CHILD (1ULL << 17)
-#define GTK_CSS_CHANGE_SIBLING_STATE (1ULL << 18)
-#define GTK_CSS_CHANGE_SIBLING_HOVER (1ULL << 19)
-#define GTK_CSS_CHANGE_SIBLING_DISABLED (1ULL << 20)
-#define GTK_CSS_CHANGE_SIBLING_BACKDROP (1ULL << 21)
+#define GTK_CSS_CHANGE_SELECTED (1ULL << 11)
+
+#define GTK_CSS_CHANGE_SIBLING_SHIFT 12
+
+#define GTK_CSS_CHANGE_SIBLING_CLASS (1ULL << 12)
+#define GTK_CSS_CHANGE_SIBLING_NAME (1ULL << 13)
+#define GTK_CSS_CHANGE_SIBLING_ID (1ULL << 14)
+#define GTK_CSS_CHANGE_SIBLING_FIRST_CHILD (1ULL << 15)
+#define GTK_CSS_CHANGE_SIBLING_LAST_CHILD (1ULL << 16)
+#define GTK_CSS_CHANGE_SIBLING_NTH_CHILD (1ULL << 17)
+#define GTK_CSS_CHANGE_SIBLING_NTH_LAST_CHILD (1ULL << 18)
+#define GTK_CSS_CHANGE_SIBLING_STATE (1ULL << 19)
+#define GTK_CSS_CHANGE_SIBLING_HOVER (1ULL << 20)
+#define GTK_CSS_CHANGE_SIBLING_DISABLED (1ULL << 21)
+#define GTK_CSS_CHANGE_SIBLING_BACKDROP (1ULL << 22)
+#define GTK_CSS_CHANGE_SIBLING_SELECTED (1ULL << 23)
#define GTK_CSS_CHANGE_PARENT_SHIFT (GTK_CSS_CHANGE_SIBLING_SHIFT + GTK_CSS_CHANGE_SIBLING_SHIFT)
-#define GTK_CSS_CHANGE_PARENT_CLASS (1ULL << 22)
-#define GTK_CSS_CHANGE_PARENT_NAME (1ULL << 23)
-#define GTK_CSS_CHANGE_PARENT_ID (1ULL << 24)
-#define GTK_CSS_CHANGE_PARENT_FIRST_CHILD (1ULL << 25)
-#define GTK_CSS_CHANGE_PARENT_LAST_CHILD (1ULL << 26)
-#define GTK_CSS_CHANGE_PARENT_NTH_CHILD (1ULL << 27)
-#define GTK_CSS_CHANGE_PARENT_NTH_LAST_CHILD (1ULL << 28)
-#define GTK_CSS_CHANGE_PARENT_STATE (1ULL << 29)
-#define GTK_CSS_CHANGE_PARENT_HOVER (1ULL << 30)
-#define GTK_CSS_CHANGE_PARENT_DISABLED (1ULL << 31)
-#define GTK_CSS_CHANGE_PARENT_BACKDROP (1ULL << 32)
+#define GTK_CSS_CHANGE_PARENT_CLASS (1ULL << 24)
+#define GTK_CSS_CHANGE_PARENT_NAME (1ULL << 25)
+#define GTK_CSS_CHANGE_PARENT_ID (1ULL << 26)
+#define GTK_CSS_CHANGE_PARENT_FIRST_CHILD (1ULL << 27)
+#define GTK_CSS_CHANGE_PARENT_LAST_CHILD (1ULL << 28)
+#define GTK_CSS_CHANGE_PARENT_NTH_CHILD (1ULL << 29)
+#define GTK_CSS_CHANGE_PARENT_NTH_LAST_CHILD (1ULL << 30)
+#define GTK_CSS_CHANGE_PARENT_STATE (1ULL << 31)
+#define GTK_CSS_CHANGE_PARENT_HOVER (1ULL << 32)
+#define GTK_CSS_CHANGE_PARENT_DISABLED (1ULL << 33)
+#define GTK_CSS_CHANGE_PARENT_BACKDROP (1ULL << 34)
+#define GTK_CSS_CHANGE_PARENT_SELECTED (1ULL << 35)
#define GTK_CSS_CHANGE_PARENT_SIBLING_SHIFT (GTK_CSS_CHANGE_PARENT_SHIFT + GTK_CSS_CHANGE_SIBLING_SHIFT)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_CLASS (1ULL << 33)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_ID (1ULL << 34)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_NAME (1ULL << 35)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_FIRST_CHILD (1ULL << 36)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_LAST_CHILD (1ULL << 37)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_NTH_CHILD (1ULL << 38)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_NTH_LAST_CHILD (1ULL << 39)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_STATE (1ULL << 40)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_HOVER (1ULL << 41)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_DISABLED (1ULL << 42)
-#define GTK_CSS_CHANGE_PARENT_SIBLING_BACKDROP (1ULL << 43)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_CLASS (1ULL << 36)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_ID (1ULL << 37)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_NAME (1ULL << 38)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_FIRST_CHILD (1ULL << 39)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_LAST_CHILD (1ULL << 40)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_NTH_CHILD (1ULL << 41)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_NTH_LAST_CHILD (1ULL << 42)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_STATE (1ULL << 43)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_HOVER (1ULL << 44)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_DISABLED (1ULL << 45)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_BACKDROP (1ULL << 46)
+#define GTK_CSS_CHANGE_PARENT_SIBLING_SELECTED (1ULL << 47)
/* add more */
-#define GTK_CSS_CHANGE_SOURCE (1ULL << 44)
-#define GTK_CSS_CHANGE_PARENT_STYLE (1ULL << 45)
-#define GTK_CSS_CHANGE_TIMESTAMP (1ULL << 46)
-#define GTK_CSS_CHANGE_ANIMATIONS (1ULL << 47)
+#define GTK_CSS_CHANGE_SOURCE (1ULL << 48)
+#define GTK_CSS_CHANGE_PARENT_STYLE (1ULL << 49)
+#define GTK_CSS_CHANGE_TIMESTAMP (1ULL << 50)
+#define GTK_CSS_CHANGE_ANIMATIONS (1ULL << 51)
#define GTK_CSS_CHANGE_RESERVED_BIT (1ULL << 62) /* Used internally in gtkcssselector.c */
GTK_CSS_CHANGE_STATE | \
GTK_CSS_CHANGE_DISABLED | \
GTK_CSS_CHANGE_BACKDROP | \
+ GTK_CSS_CHANGE_SELECTED | \
GTK_CSS_CHANGE_HOVER)
#define GTK_CSS_CHANGE_ANY_SIBLING (GTK_CSS_CHANGE_ANY_SELF << GTK_CSS_CHANGE_SIBLING_SHIFT)
#define GTK_CSS_CHANGE_ANY_PARENT (GTK_CSS_CHANGE_ANY_SELF << GTK_CSS_CHANGE_PARENT_SHIFT)