gtk_at_context_unrealize (self);
- g_clear_object (&self->accessible_parent);
- g_clear_object (&self->next_accessible_sibling);
+ if (self->accessible_parent != NULL)
+ {
+ g_object_remove_weak_pointer (G_OBJECT (self->accessible_parent),
+ (gpointer *) &self->accessible_parent);
+ self->accessible_parent = NULL;
+ }
+
+ if (self->next_accessible_sibling != NULL)
+ {
+ g_object_remove_weak_pointer (G_OBJECT (self->next_accessible_sibling),
+ (gpointer *) &self->next_accessible_sibling);
+ self->next_accessible_sibling = NULL;
+ }
G_OBJECT_CLASS (gtk_at_context_parent_class)->dispose (gobject);
}
{
g_return_if_fail (GTK_IS_AT_CONTEXT (self));
- g_set_object (&self->accessible_parent, parent);
+ if (self->accessible_parent != parent)
+ {
+ if (self->accessible_parent != NULL)
+ g_object_remove_weak_pointer (G_OBJECT (self->accessible_parent),
+ (gpointer *) &self->accessible_parent);
+
+ self->accessible_parent = parent;
+ if (self->accessible_parent != NULL)
+ g_object_add_weak_pointer (G_OBJECT (self->accessible_parent),
+ (gpointer *) &self->accessible_parent);
+ }
}
/*< private >
{
g_return_if_fail (GTK_IS_AT_CONTEXT (self));
- g_set_object (&self->next_accessible_sibling, sibling);
+ if (self->next_accessible_sibling != sibling)
+ {
+ if (self->next_accessible_sibling != NULL)
+ g_object_remove_weak_pointer (G_OBJECT (self->next_accessible_sibling),
+ (gpointer *) &self->next_accessible_sibling);
+
+ self->next_accessible_sibling = sibling;
+
+ if (self->next_accessible_sibling != NULL)
+ g_object_add_weak_pointer (G_OBJECT (self->next_accessible_sibling),
+ (gpointer *) &self->next_accessible_sibling);
+ }
}
/*< private >