Merge branch 'expander-non-child' into 'main'

expander: Don't leave dangling a11y relations

See merge request GNOME/gtk!7409
This commit is contained in:
Matthias Clasen
2024-07-03 17:24:44 +00:00
2 changed files with 18 additions and 6 deletions

View File

@@ -897,9 +897,14 @@ gtk_expander_set_expanded (GtkExpander *expander,
{ {
gtk_box_append (GTK_BOX (expander->box), child); gtk_box_append (GTK_BOX (expander->box), child);
g_object_unref (expander->child); g_object_unref (expander->child);
gtk_accessible_update_relation (GTK_ACCESSIBLE (expander),
GTK_ACCESSIBLE_RELATION_CONTROLS, expander->child, NULL,
-1);
} }
else else
{ {
gtk_accessible_reset_relation (GTK_ACCESSIBLE (expander),
GTK_ACCESSIBLE_RELATION_CONTROLS);
g_object_ref (expander->child); g_object_ref (expander->child);
gtk_box_remove (GTK_BOX (expander->box), 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 * dropped once the expander is expanded
*/ */
if (expander->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 else
g_object_ref_sink (expander->child); {
gtk_accessible_reset_relation (GTK_ACCESSIBLE (expander),
gtk_accessible_update_relation (GTK_ACCESSIBLE (expander), GTK_ACCESSIBLE_RELATION_CONTROLS);
GTK_ACCESSIBLE_RELATION_CONTROLS, expander->child, NULL, g_object_ref_sink (expander->child);
-1); }
} }
else else
{ {

View File

@@ -36,6 +36,8 @@ expander_relations (void)
gtk_expander_set_child (GTK_EXPANDER (widget), child); 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); gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_CONTROLS, child, NULL);
g_object_unref (widget); g_object_unref (widget);