eel seems to unref an object it never refed in eel_accessibility_set_up_label_widget_relation, which is bad. Check out atk_object_add_relationship for a clean implementation. -- Christian Neumair <chris gnome-de org>
Index: eel/eel-accessibility.c
===================================================================
RCS file: /cvs/gnome/eel/eel/eel-accessibility.c,v
retrieving revision 1.12
diff -u -p -r1.12 eel-accessibility.c
--- eel/eel-accessibility.c 28 Mar 2005 19:51:00 -0000 1.12
+++ eel/eel-accessibility.c 30 Sep 2005 18:38:50 -0000
@@ -31,28 +31,15 @@ void
eel_accessibility_set_up_label_widget_relation (GtkWidget *label, GtkWidget *widget)
{
AtkObject *atk_widget, *atk_label;
- AtkRelationSet *relation_set;
- AtkRelation *relation;
- AtkObject *targets[1];
atk_label = gtk_widget_get_accessible (label);
atk_widget = gtk_widget_get_accessible (widget);
/* Create the label -> widget relation */
- relation_set = atk_object_ref_relation_set (atk_label);
- targets[0] = atk_widget;
- relation = atk_relation_new (targets, 1, ATK_RELATION_LABEL_FOR);
- atk_relation_set_add (relation_set, relation);
- g_object_unref (relation);
- g_object_unref (relation_set);
+ atk_object_add_relationship (atk_label, ATK_RELATION_LABEL_FOR, atk_widget);
/* Create the widget -> label relation */
- relation_set = atk_object_ref_relation_set (atk_widget);
- targets[0] = atk_label;
- relation = atk_relation_new (targets, 1, ATK_RELATION_LABELLED_BY);
- atk_relation_set_add (relation_set, relation);
- g_object_unref (relation);
- g_object_unref (relation_set);
+ atk_object_add_relationship (atk_label, ATK_RELATION_LABELLED_BY, atk_widget);
}
/*
Attachment:
signature.asc
Description: This is a digitally signed message part