Exemple #1
0
static AtkRelation *
get_relation_from_servant (PortableServer_Servant servant)
{
  SpiBase *base = SPI_BASE (bonobo_object_from_servant(servant));

  g_return_val_if_fail (base, NULL);
  return  ATK_RELATION(base->gobj);
}
static void 
atk_relation_set_property (GObject       *object,
                           guint         prop_id,
                           const GValue  *value,
                           GParamSpec    *pspec)
{
  AtkRelation *relation;
  gpointer boxed;

  relation = ATK_RELATION (object);

  switch (prop_id)
    {
    case PROP_RELATION_TYPE:
      relation->relationship = g_value_get_enum (value);
      break; 
    case PROP_TARGET:
      if (relation->target)
      {
        gint i;

        for (i = 0; i < relation->target->len; i++)
        {
          g_object_weak_unref (G_OBJECT (g_ptr_array_index (relation->target, i)),
                               (GWeakNotify) delete_object_while_in_relation,
                               relation->target);
        }
        g_ptr_array_free (relation->target, TRUE);
      }
      boxed = g_value_get_boxed (value);
      relation->target = atk_relation_get_ptr_array_from_value_array ( (GValueArray *) boxed);
      break; 
    default:
      break;
    }  
}
static void
atk_relation_finalize (GObject *object)
{
  AtkRelation        *relation;

  g_return_if_fail (ATK_IS_RELATION (object));

  relation = ATK_RELATION (object);

  if (relation->target)
  {
    gint i;

    for (i = 0; i < relation->target->len; i++)
    {
      g_object_weak_unref (G_OBJECT (g_ptr_array_index (relation->target, i)),
                           (GWeakNotify) delete_object_while_in_relation, 
                           relation->target);
    }
    g_ptr_array_free (relation->target, TRUE);
  } 

  G_OBJECT_CLASS (parent_class)->finalize (object);
}