예제 #1
0
static void
clutter_group_dispose (GObject *object)
{
  ClutterGroup *self = CLUTTER_GROUP (object);
  ClutterGroupPrivate *priv = self->priv;

  /* Note: we are careful to consider that destroying children could
   * have the side-effect of destroying other children so
   * priv->children may be modified during clutter_actor_destroy. */
  while (priv->children)
    {
      ClutterActor *child = priv->children->data;
      priv->children = g_list_delete_link (priv->children, priv->children);
      clutter_actor_destroy (child);
    }

  if (priv->layout)
    {
      clutter_layout_manager_set_container (priv->layout, NULL);
      g_object_unref (priv->layout);
      priv->layout = NULL;
    }

  G_OBJECT_CLASS (clutter_group_parent_class)->dispose (object);
}
예제 #2
0
static VALUE
rbclt_layout_manager_set_container (VALUE self, VALUE container)
{
  ClutterLayoutManager *manager = CLUTTER_LAYOUT_MANAGER (RVAL2GOBJ (self));
  ClutterContainer *g_container = CLUTTER_CONTAINER (RVAL2GOBJ (container));
  
  clutter_layout_manager_set_container (manager, g_container);
  return Qnil;
}
예제 #3
0
static void
clutter_group_init (ClutterGroup *self)
{
  self->priv = CLUTTER_GROUP_GET_PRIVATE (self);

  self->priv->layout = clutter_fixed_layout_new ();
  g_object_ref_sink (self->priv->layout);

  clutter_layout_manager_set_container (self->priv->layout,
                                        CLUTTER_CONTAINER (self));
}
static void
champlain_group_init (ChamplainGroup *self)
{
  self->priv = GET_PRIVATE (self);

  self->priv->layout = clutter_fixed_layout_new ();
  g_object_ref_sink (self->priv->layout);

  self->priv->children = NULL;
  self->priv->children_end = NULL;

  clutter_layout_manager_set_container (self->priv->layout,
      CLUTTER_CONTAINER (self));
}
예제 #5
0
static inline void
set_layout_manager (ClutterBox           *self,
                    ClutterLayoutManager *manager)
{
  ClutterBoxPrivate *priv = self->priv;

  if (priv->manager == manager)
    return;

  if (priv->manager != NULL)
    {
      if (priv->changed_id != 0)
        g_signal_handler_disconnect (priv->manager, priv->changed_id);

      clutter_layout_manager_set_container (priv->manager, NULL);
      g_object_unref (priv->manager);

      priv->manager = NULL;
      priv->changed_id = 0;
    }

  if (manager != NULL)
    {
      priv->manager = g_object_ref_sink (manager);
      clutter_layout_manager_set_container (manager,
                                            CLUTTER_CONTAINER (self));

      priv->changed_id =
        g_signal_connect_swapped (priv->manager, "layout-changed",
                                  G_CALLBACK (clutter_actor_queue_relayout),
                                  self);
    }

  clutter_actor_queue_relayout (CLUTTER_ACTOR (self));

  _clutter_notify_by_pspec (G_OBJECT (self), obj_props[PROP_LAYOUT_MANAGER]);
}
static void
champlain_group_dispose (GObject *object)
{
  ChamplainGroup *self = CHAMPLAIN_GROUP (object);
  ChamplainGroupPrivate *priv = self->priv;

  if (priv->children)
    {
      g_list_foreach (priv->children, (GFunc) clutter_actor_destroy, NULL);
      g_list_free (priv->children);

      priv->children = NULL;
      priv->children_end = NULL;
    }

  if (priv->layout)
    {
      clutter_layout_manager_set_container (priv->layout, NULL);
      g_object_unref (priv->layout);
      priv->layout = NULL;
    }

  G_OBJECT_CLASS (champlain_group_parent_class)->dispose (object);
}