From 5c8d18e619fe974551783e4d1b000b24cae4afb9 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Mon, 6 Aug 2007 19:37:15 +0000 Subject: [PATCH] Add default padding to ClutterBox To avoid using a ClutterPadding each time you add an actor to a ClutterBox when you want the same padding around each child, you can now set the default padding. The API is pixel-based, since it's a commodity function, and will affect only clutter_box_pack_defaults(). --- clutter/clutter-box.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++--- clutter/clutter-box.h | 57 +++++++++++++++++++++++++++----------------- 2 files changed, 98 insertions(+), 25 deletions(-) diff --git a/clutter/clutter-box.c b/clutter/clutter-box.c index 49004bd..726675d 100644 --- a/clutter/clutter-box.c +++ b/clutter/clutter-box.c @@ -369,12 +369,12 @@ void clutter_box_pack_defaults (ClutterBox *box, ClutterActor *actor) { - ClutterPadding padding = { 0, }; - g_return_if_fail (CLUTTER_IS_BOX (box)); g_return_if_fail (CLUTTER_IS_ACTOR (actor)); - clutter_box_pack (box, actor, CLUTTER_PACK_START, &padding); + clutter_box_pack (box, actor, + CLUTTER_PACK_START, + &box->default_padding); } /** @@ -609,6 +609,66 @@ clutter_box_remove_all (ClutterBox *box) } } +/** + * clutter_box_set_default_padding: + * @box: a #ClutterBox + * @padding_top: top padding, in pixels + * @padding_right: right padding, in pixels + * @padding_bottom: bottom padding, in pixels + * @padding_left: left padding, in pixels + * + * Sets the default padding for children, which will be used when + * packing actors with clutter_box_pack_defaults(). The padding is + * given in pixels. + * + * Since: 0.4 + */ +void +clutter_box_set_default_padding (ClutterBox *box, + gint padding_top, + gint padding_right, + gint padding_bottom, + gint padding_left) +{ + g_return_if_fail (CLUTTER_IS_BOX (box)); + + box->default_padding.top = CLUTTER_UNITS_FROM_INT (padding_top); + box->default_padding.right = CLUTTER_UNITS_FROM_INT (padding_right); + box->default_padding.bottom = CLUTTER_UNITS_FROM_INT (padding_bottom); + box->default_padding.left = CLUTTER_UNITS_FROM_INT (padding_left); +} + +/** + * clutter_box_get_default_padding: + * @box: a #ClutterBox + * @padding_top: return location for the top padding, or %NULL + * @padding_right: return location for the right padding, or %NULL + * @padding_bottom: return location for the bottom padding, or %NULL + * @padding_left: return location for the left padding, or %NULL + * + * Gets the default padding set with clutter_box_set_default_padding(). + * + * Since: 0.4 + */ +void +clutter_box_get_default_padding (ClutterBox *box, + gint *padding_top, + gint *padding_right, + gint *padding_bottom, + gint *padding_left) +{ + g_return_if_fail (CLUTTER_IS_BOX (box)); + + if (padding_top) + *padding_top = CLUTTER_UNITS_TO_INT (box->default_padding.top); + if (padding_right) + *padding_right = CLUTTER_UNITS_TO_INT (box->default_padding.right); + if (padding_bottom) + *padding_bottom = CLUTTER_UNITS_TO_INT (box->default_padding.bottom); + if (padding_left) + *padding_left = CLUTTER_UNITS_TO_INT (box->default_padding.left); +} + /* * Boxed types */ diff --git a/clutter/clutter-box.h b/clutter/clutter-box.h index 3422c71..7ba3dca 100644 --- a/clutter/clutter-box.h +++ b/clutter/clutter-box.h @@ -53,6 +53,9 @@ struct _ClutterBox /* Margin between the inner border of the box and the children */ ClutterMargin margin; + + /* Default padding for the children */ + ClutterPadding default_padding; }; struct _ClutterBoxClass @@ -95,28 +98,38 @@ struct _ClutterBoxChild ClutterPadding padding; }; -GType clutter_box_get_type (void) G_GNUC_CONST; -void clutter_box_set_color (ClutterBox *box, - const ClutterColor *color); -void clutter_box_get_color (ClutterBox *box, - ClutterColor *color); -void clutter_box_set_margin (ClutterBox *box, - const ClutterMargin *margin); -void clutter_box_get_margin (ClutterBox *box, - ClutterMargin *margin); -void clutter_box_pack (ClutterBox *box, - ClutterActor *actor, - ClutterPackType pack_type, - const ClutterPadding *padding); -void clutter_box_pack_defaults (ClutterBox *box, - ClutterActor *actor); -void clutter_box_remove_all (ClutterBox *box); -gboolean clutter_box_query_child (ClutterBox *box, - ClutterActor *actor, - ClutterBoxChild *child); -gboolean clutter_box_query_nth_child (ClutterBox *box, - gint index_, - ClutterBoxChild *child); +GType clutter_box_get_type (void) G_GNUC_CONST; +void clutter_box_set_color (ClutterBox *box, + const ClutterColor *color); +void clutter_box_get_color (ClutterBox *box, + ClutterColor *color); +void clutter_box_set_margin (ClutterBox *box, + const ClutterMargin *margin); +void clutter_box_get_margin (ClutterBox *box, + ClutterMargin *margin); +void clutter_box_set_default_padding (ClutterBox *box, + gint padding_top, + gint padding_right, + gint padding_bottom, + gint padding_left); +void clutter_box_get_default_padding (ClutterBox *box, + gint *padding_top, + gint *padding_right, + gint *padding_bottom, + gint *padding_left); +void clutter_box_pack (ClutterBox *box, + ClutterActor *actor, + ClutterPackType pack_type, + const ClutterPadding *padding); +void clutter_box_pack_defaults (ClutterBox *box, + ClutterActor *actor); +void clutter_box_remove_all (ClutterBox *box); +gboolean clutter_box_query_child (ClutterBox *box, + ClutterActor *actor, + ClutterBoxChild *child); +gboolean clutter_box_query_nth_child (ClutterBox *box, + gint index_, + ClutterBoxChild *child); G_END_DECLS -- 2.7.4