diff --git a/gtk/gtkexpander.c b/gtk/gtkexpander.c index 6eadcf2226..bb2f205376 100644 --- a/gtk/gtkexpander.c +++ b/gtk/gtkexpander.c @@ -897,9 +897,14 @@ gtk_expander_set_expanded (GtkExpander *expander, { gtk_box_append (GTK_BOX (expander->box), child); g_object_unref (expander->child); + gtk_accessible_update_relation (GTK_ACCESSIBLE (expander), + GTK_ACCESSIBLE_RELATION_CONTROLS, expander->child, NULL, + -1); } else { + gtk_accessible_reset_relation (GTK_ACCESSIBLE (expander), + GTK_ACCESSIBLE_RELATION_CONTROLS); g_object_ref (expander->child); gtk_box_remove (GTK_BOX (expander->box), child); } @@ -1209,13 +1214,18 @@ gtk_expander_set_child (GtkExpander *expander, * dropped once the expander is expanded */ if (expander->expanded) - gtk_box_append (GTK_BOX (expander->box), expander->child); + { + gtk_box_append (GTK_BOX (expander->box), expander->child); + gtk_accessible_update_relation (GTK_ACCESSIBLE (expander), + GTK_ACCESSIBLE_RELATION_CONTROLS, expander->child, NULL, + -1); + } else - g_object_ref_sink (expander->child); - - gtk_accessible_update_relation (GTK_ACCESSIBLE (expander), - GTK_ACCESSIBLE_RELATION_CONTROLS, expander->child, NULL, - -1); + { + gtk_accessible_reset_relation (GTK_ACCESSIBLE (expander), + GTK_ACCESSIBLE_RELATION_CONTROLS); + g_object_ref_sink (expander->child); + } } else { diff --git a/testsuite/a11y/expander.c b/testsuite/a11y/expander.c index 07d605622b..fbb4b55ec0 100644 --- a/testsuite/a11y/expander.c +++ b/testsuite/a11y/expander.c @@ -36,6 +36,8 @@ expander_relations (void) gtk_expander_set_child (GTK_EXPANDER (widget), child); + gtk_expander_set_expanded (GTK_EXPANDER (widget), TRUE); + gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_CONTROLS, child, NULL); g_object_unref (widget);