From 4141a7d7c8a949585d5bfdc997c7651c5e3fc49f Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 9 Nov 2015 01:38:39 +0100 Subject: [PATCH] csstypes: Propagate NTH_CHILD and NTH_LAST_CHILD to siblings Otherwise, we'd have to mark eveyr child on changes, and it's far easier to do that once we actually validate. --- gtk/gtkcsstypes.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gtk/gtkcsstypes.c b/gtk/gtkcsstypes.c index e14ab2ce1c..2e93cbca56 100644 --- a/gtk/gtkcsstypes.c +++ b/gtk/gtkcsstypes.c @@ -34,11 +34,16 @@ _gtk_css_change_for_sibling (GtkCssChange match) | GTK_CSS_CHANGE_NTH_LAST_CHILD \ | GTK_CSS_CHANGE_STATE ) +#define KEEP_STATES ( ~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_PARENT_STYLE) \ + | GTK_CSS_CHANGE_NTH_CHILD \ + | GTK_CSS_CHANGE_NTH_LAST_CHILD) + #define SIBLING_SHIFT 8 - return (match & ~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_PARENT_STYLE)) | ((match & BASE_STATES) << SIBLING_SHIFT); + return (match & KEEP_STATES) | ((match & BASE_STATES) << SIBLING_SHIFT); #undef BASE_STATES +#undef KEEP_STATES #undef SIBLING_SHIFT }