diff --git a/gtk/gtkcssmatcher.c b/gtk/gtkcssmatcher.c
index d169c274cf..b734bfa3ea 100644
--- a/gtk/gtkcssmatcher.c
+++ b/gtk/gtkcssmatcher.c
@@ -56,7 +56,13 @@ gtk_css_matcher_widget_path_get_previous (GtkCssMatcher *matcher,
static GtkStateFlags
gtk_css_matcher_widget_path_get_state (const GtkCssMatcher *matcher)
{
- return gtk_widget_path_iter_get_state (matcher->path.path, matcher->path.index);
+ const GtkWidgetPath *siblings;
+
+ siblings = gtk_widget_path_iter_get_siblings (matcher->path.path, matcher->path.index);
+ if (siblings && matcher->path.sibling_index != gtk_widget_path_iter_get_sibling_index (matcher->path.path, matcher->path.index))
+ return gtk_widget_path_iter_get_state (siblings, matcher->path.sibling_index);
+ else
+ return gtk_widget_path_iter_get_state (matcher->path.path, matcher->path.index);
}
static gboolean
diff --git a/testsuite/reftests/Makefile.am b/testsuite/reftests/Makefile.am
index 8501c34ab6..9e04237682 100644
--- a/testsuite/reftests/Makefile.am
+++ b/testsuite/reftests/Makefile.am
@@ -334,6 +334,9 @@ testdata = \
shorthand-entry-border.css \
shorthand-entry-border.ref.ui \
shorthand-entry-border.ui \
+ sibling-pseudoclasses.css \
+ sibling-pseudoclasses.ref.ui \
+ sibling-pseudoclasses.ui \
simple.ref.ui \
simple.ui \
sizegroups-basics.css \
diff --git a/testsuite/reftests/sibling-pseudoclasses.css b/testsuite/reftests/sibling-pseudoclasses.css
new file mode 100644
index 0000000000..52faf13e32
--- /dev/null
+++ b/testsuite/reftests/sibling-pseudoclasses.css
@@ -0,0 +1,3 @@
+:active + * {
+ color: tomato;
+}
diff --git a/testsuite/reftests/sibling-pseudoclasses.ref.ui b/testsuite/reftests/sibling-pseudoclasses.ref.ui
new file mode 100644
index 0000000000..ef39a84850
--- /dev/null
+++ b/testsuite/reftests/sibling-pseudoclasses.ref.ui
@@ -0,0 +1,46 @@
+
+
+
+
+
+
diff --git a/testsuite/reftests/sibling-pseudoclasses.ui b/testsuite/reftests/sibling-pseudoclasses.ui
new file mode 100644
index 0000000000..4c83b2425c
--- /dev/null
+++ b/testsuite/reftests/sibling-pseudoclasses.ui
@@ -0,0 +1,43 @@
+
+
+
+
+
+ False
+
+
+ True
+ False
+ vertical
+
+
+ True
+ True
+ True
+ True
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ I'm tomato.
+
+
+ False
+ True
+ 1
+
+
+
+
+
+