Esempio n. 1
0
static inline ClutterLayoutMeta *
get_child_meta (ClutterLayoutManager *manager,
                ClutterContainer     *container,
                ClutterActor         *actor)
{
    ClutterLayoutMeta *layout = NULL;

    layout = g_object_get_qdata (G_OBJECT (actor), quark_layout_meta);
    if (layout != NULL)
    {
        ClutterChildMeta *child = CLUTTER_CHILD_META (layout);

        if (layout->manager == manager &&
                child->container == container &&
                child->actor == actor)
            return layout;

        /* if the LayoutMeta referenced is not attached to the
         * layout manager then we simply ask the layout manager
         * to replace it with the right one
         */
    }

    layout = create_child_meta (manager, container, actor);
    if (layout != NULL)
    {
        g_assert (CLUTTER_IS_LAYOUT_META (layout));
        g_object_set_qdata_full (G_OBJECT (actor), quark_layout_meta,
                                 layout,
                                 (GDestroyNotify) g_object_unref);
        return layout;
    }

    return NULL;
}
static void
st_box_layout_child_set_property (GObject      *object,
                                  guint         property_id,
                                  const GValue *value,
                                  GParamSpec   *pspec)
{
  StBoxLayoutChild *child = ST_BOX_LAYOUT_CHILD (object);
  StBoxLayout *box = ST_BOX_LAYOUT (CLUTTER_CHILD_META (object)->container);

  switch (property_id)
    {
    case PROP_EXPAND:
      child->expand = g_value_get_boolean (value);
      break;
    case PROP_X_FILL:
      child->x_fill = g_value_get_boolean (value);
      break;
    case PROP_Y_FILL:
      child->y_fill = g_value_get_boolean (value);
      break;
    case PROP_X_ALIGN:
      child->x_align = g_value_get_enum (value);
      break;
    case PROP_Y_ALIGN:
      child->y_align = g_value_get_enum (value);
      break;

    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
    }

  clutter_actor_queue_relayout ((ClutterActor*) box);
}
static ClutterLayoutMeta *
get_layout_meta (StBoxLayoutChild *self)
{
  ClutterChildMeta *meta = CLUTTER_CHILD_META (self);
  ClutterActor *actor = clutter_child_meta_get_actor (meta);
  ClutterContainer *container = clutter_child_meta_get_container (meta);
  ClutterLayoutManager *layout = clutter_actor_get_layout_manager (CLUTTER_ACTOR (container));
  return clutter_layout_manager_get_child_meta (layout, container, actor);
}
Esempio n. 4
0
static void
table_child_set_property (GObject      *gobject,
                          guint         prop_id,
                          const GValue *value,
                          GParamSpec   *pspec)
{
  StTableChild *child = ST_TABLE_CHILD (gobject);
  StTable *table = ST_TABLE (CLUTTER_CHILD_META(gobject)->container);

  switch (prop_id)
    {
    case CHILD_PROP_COL:
      child->col = g_value_get_int (value);
      _st_table_update_row_col (table, -1, child->col);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_ROW:
      child->row = g_value_get_int (value);
      _st_table_update_row_col (table, child->row, -1);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_COL_SPAN:
      child->col_span = g_value_get_int (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_ROW_SPAN:
      child->row_span = g_value_get_int (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_X_EXPAND:
      child->x_expand = g_value_get_boolean (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_Y_EXPAND:
      child->y_expand = g_value_get_boolean (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_X_ALIGN:
      child->x_align = g_value_get_enum (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_Y_ALIGN:
      child->y_align = g_value_get_enum (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_X_FILL:
      child->x_fill = g_value_get_boolean (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_Y_FILL:
      child->y_fill = g_value_get_boolean (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;
    case CHILD_PROP_ALLOCATE_HIDDEN:
      child->allocate_hidden = g_value_get_boolean (value);
      clutter_actor_queue_relayout (CLUTTER_ACTOR (table));
      break;

    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
      break;
    }
}