/** * st_bin_set_fill: * @bin: a #StBin * @x_fill: %TRUE if the child should fill horizontally the @bin * @y_fill: %TRUE if the child should fill vertically the @bin * * Sets whether the child of @bin should fill out the horizontal * and/or vertical allocation of the parent */ void st_bin_set_fill (StBin *bin, gboolean x_fill, gboolean y_fill) { StBinPrivate *priv; gboolean changed = FALSE; g_return_if_fail (ST_IS_BIN (bin)); priv = bin->priv; g_object_freeze_notify (G_OBJECT (bin)); if (priv->x_fill != x_fill) { priv->x_fill = x_fill; changed = TRUE; g_object_notify (G_OBJECT (bin), "x-fill"); } if (priv->y_fill != y_fill) { priv->y_fill = y_fill; changed = TRUE; g_object_notify (G_OBJECT (bin), "y-fill"); } if (changed) clutter_actor_queue_relayout (CLUTTER_ACTOR (bin)); g_object_thaw_notify (G_OBJECT (bin)); }
/** * st_bin_set_alignment: * @bin: a #StBin * @x_align: horizontal alignment * @y_align: vertical alignment * * Sets the horizontal and vertical alignment of the child * inside a #StBin. */ void st_bin_set_alignment (StBin *bin, StAlign x_align, StAlign y_align) { StBinPrivate *priv; gboolean changed = FALSE; g_return_if_fail (ST_IS_BIN (bin)); priv = bin->priv; g_object_freeze_notify (G_OBJECT (bin)); if (priv->x_align != x_align) { priv->x_align = x_align; g_object_notify (G_OBJECT (bin), "x-align"); changed = TRUE; } if (priv->y_align != y_align) { priv->y_align = y_align; g_object_notify (G_OBJECT (bin), "y-align"); changed = TRUE; } if (changed) clutter_actor_queue_relayout (CLUTTER_ACTOR (bin)); g_object_thaw_notify (G_OBJECT (bin)); }
/** * st_bin_get_child: * @bin: a #StBin * * Retrieves a pointer to the child of @bin. * * Return value: (transfer none): a #ClutterActor, or %NULL */ ClutterActor * st_bin_get_child (StBin *bin) { g_return_val_if_fail (ST_IS_BIN (bin), NULL); return bin->priv->child; }
/** * st_bin_set_child: * @bin: a #StBin * @child: (allow-none): a #ClutterActor, or %NULL * * Sets @child as the child of @bin. * * If @bin already has a child, the previous child is removed. */ void st_bin_set_child (StBin *bin, ClutterActor *child) { StBinPrivate *priv; g_return_if_fail (ST_IS_BIN (bin)); g_return_if_fail (child == NULL || CLUTTER_IS_ACTOR (child)); priv = bin->priv; if (priv->child == child) return; if (priv->child) clutter_actor_remove_child (CLUTTER_ACTOR (bin), priv->child); priv->child = NULL; if (child) { priv->child = child; clutter_actor_add_child (CLUTTER_ACTOR (bin), child); } clutter_actor_queue_relayout (CLUTTER_ACTOR (bin)); g_object_notify (G_OBJECT (bin), "child"); }
/** * st_bin_get_fill: * @bin: a #StBin * @x_fill: (out): return location for the horizontal fill, or %NULL * @y_fill: (out): return location for the vertical fill, or %NULL * * Retrieves the horizontal and vertical fill settings */ void st_bin_get_fill (StBin *bin, gboolean *x_fill, gboolean *y_fill) { g_return_if_fail (ST_IS_BIN (bin)); if (x_fill) *x_fill = bin->priv->x_fill; if (y_fill) *y_fill = bin->priv->y_fill; }
/** * st_bin_get_alignment: * @bin: a #StBin * @x_align: return location for the horizontal alignment, or %NULL * @y_align: return location for the vertical alignment, or %NULL * * Retrieves the horizontal and vertical alignment of the child * inside a #StBin, as set by st_bin_set_alignment(). */ void st_bin_get_alignment (StBin *bin, StAlign *x_align, StAlign *y_align) { StBinPrivate *priv; g_return_if_fail (ST_IS_BIN (bin)); priv = bin->priv; if (x_align) *x_align = priv->x_align; if (y_align) *y_align = priv->y_align; }
/** * st_bin_set_child: * @bin: a #StBin * @child: (allow-none): a #ClutterActor, or %NULL * * Sets @child as the child of @bin. * * If @bin already has a child, the previous child is removed. */ void st_bin_set_child (StBin *bin, ClutterActor *child) { StBinPrivate *priv; g_return_if_fail (ST_IS_BIN (bin)); g_return_if_fail (child == NULL || CLUTTER_IS_ACTOR (child)); priv = bin->priv; if (priv->child == child) return; if (priv->child) { ClutterActor *old_child = priv->child; g_object_ref (old_child); priv->child = NULL; clutter_actor_unparent (old_child); g_signal_emit_by_name (bin, "actor-removed", old_child); g_object_unref (old_child); } if (child) { priv->child = child; clutter_actor_set_parent (child, CLUTTER_ACTOR (bin)); g_signal_emit_by_name (bin, "actor-added", priv->child); } clutter_actor_queue_relayout (CLUTTER_ACTOR (bin)); g_object_notify (G_OBJECT (bin), "child"); }