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); }
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; } }