summaryrefslogtreecommitdiff
path: root/atk/atkrelation.c
diff options
context:
space:
mode:
authorPadraig O'Briain <padraig.obriain@sun.com>2004-11-22 13:21:18 +0000
committerPadraig O'Briain <padraigo@src.gnome.org>2004-11-22 13:21:18 +0000
commit44d21d4402a64f7ca60b84e8543e205f585d207f (patch)
tree9cd544e6d4acad38183ed94dc3790c2c51d0b9a9 /atk/atkrelation.c
parent46270d7db51b3808ffc2aa0324272159bb6e792c (diff)
downloadatk-44d21d4402a64f7ca60b84e8543e205f585d207f.tar.gz
Replace DEPRECATED by @Deprecated in comments to fix warning when
2004-11-22 Padraig O'Briain <padraig.obriain@sun.com> * atk/atkobject.c: Replace DEPRECATED by @Deprecated in comments to fix warning when documentation is generated. * atk/atkrelation.[ch]: * docs/tmpl/atkrelation.sgml: Add atk_relation_add_target. * atk/atkrelationset.[ch]: * atk/tmpl/atkrelationset.sgml: Add atk_relation_add_relation_by_type. * docs/atk-sections.txt: Add atk_relation_add_target and atk_relation_add_relation_by_type. Fixes bug #158722.
Diffstat (limited to 'atk/atkrelation.c')
-rwxr-xr-xatk/atkrelation.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/atk/atkrelation.c b/atk/atkrelation.c
index 6ed728e..3452526 100755
--- a/atk/atkrelation.c
+++ b/atk/atkrelation.c
@@ -304,6 +304,32 @@ delete_object_while_in_relation (gpointer callback_data,
g_ptr_array_remove (array, where_the_object_was);
}
+/**
+ * atk_relation_add_target:
+ * @relation: an #AtkRelation
+ * @target: an #AtkObject
+ *
+ * Adds the specified AtkObject to the target for the relation, if it is
+ * not already present.
+ **/
+void
+atk_relation_add_target (AtkRelation *relation,
+ AtkObject *target)
+{
+ guint i;
+
+ g_return_if_fail (ATK_IS_RELATION (relation));
+ g_return_if_fail (ATK_IS_OBJECT (target));
+
+ /* first check if target occurs in array ... */
+ for (i = 0; i < relation->target->len; i++)
+ if (g_ptr_array_index(relation->target, i) == target)
+ return;
+
+ g_ptr_array_add (relation->target, target);
+ g_object_weak_ref (G_OBJECT (target), (GWeakNotify) delete_object_while_in_relation, relation->target);
+}
+
static void
atk_relation_finalize (GObject *object)
{