[clutter] table-layout: Override compute_expand()
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] table-layout: Override compute_expand()
- Date: Mon, 16 Jan 2012 23:58:16 +0000 (UTC)
commit 72b523c9e9b9d5f7688090e181bd80e4ab94b83e
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Tue Dec 20 18:42:53 2011 +0000
table-layout: Override compute_expand()
The TableLayout has two expansion flags that need to be taken into
consideration when computing the Actor expansion flags.
clutter/clutter-table-layout.c | 56 ++++++++++++++++++++++++++++++++++-----
1 files changed, 48 insertions(+), 8 deletions(-)
---
diff --git a/clutter/clutter-table-layout.c b/clutter/clutter-table-layout.c
index f22abe5..fcf4b2c 100644
--- a/clutter/clutter-table-layout.c
+++ b/clutter/clutter-table-layout.c
@@ -433,6 +433,8 @@ table_child_set_expand (ClutterTableChild *self,
else
clutter_layout_manager_layout_changed (layout);
+ clutter_actor_queue_compute_expand (CLUTTER_CHILD_META (self)->actor);
+
if (x_changed)
g_object_notify (G_OBJECT (self), "x-expand");
@@ -503,14 +505,14 @@ clutter_table_child_set_property (GObject *gobject,
case PROP_CHILD_X_EXPAND:
table_child_set_expand (self,
- g_value_get_boolean (value),
- self->y_expand);
+ g_value_get_boolean (value),
+ self->y_expand);
break;
case PROP_CHILD_Y_EXPAND:
table_child_set_expand (self,
- self->x_expand,
- g_value_get_boolean (value));
+ self->x_expand,
+ g_value_get_boolean (value));
break;
default:
@@ -764,7 +766,10 @@ calculate_col_widths (ClutterTableLayout *self,
/* reset the visibility of all columns */
priv->visible_cols = 0;
for (i = 0; i < priv->n_cols; i++)
- columns[i].visible = FALSE;
+ {
+ columns[i].expand = FALSE;
+ columns[i].visible = FALSE;
+ }
actor = CLUTTER_ACTOR (container);
@@ -800,7 +805,10 @@ calculate_col_widths (ClutterTableLayout *self,
col->min_size = MAX (col->min_size, c_min);
col->pref_size = MAX (col->pref_size, c_pref);
- col->expand = MAX (col->expand, meta->x_expand);
+
+ col->expand = MAX (col->expand,
+ MAX (meta->x_expand,
+ clutter_actor_needs_x_expand (child)));
}
/* STAGE TWO: take spanning children into account */
@@ -1033,7 +1041,10 @@ calculate_row_heights (ClutterTableLayout *self,
/* reset the visibility of all rows */
priv->visible_rows = 0;
for (i = 0; i < priv->n_rows; i++)
- rows[i].visible = FALSE;
+ {
+ rows[i].expand = FALSE;
+ rows[i].visible = FALSE;
+ }
actor = CLUTTER_ACTOR (container);
@@ -1070,7 +1081,10 @@ calculate_row_heights (ClutterTableLayout *self,
row->min_size = MAX (row->min_size, c_min);
row->pref_size = MAX (row->pref_size, c_pref);
- row->expand = MAX (row->expand, meta->y_expand);
+
+ row->expand = MAX (row->expand,
+ MAX (meta->y_expand,
+ clutter_actor_needs_y_expand (child)));
}
/* STAGE TWO: take spanning children into account */
@@ -1617,6 +1631,31 @@ clutter_table_layout_end_animation (ClutterLayoutManager *manager)
}
static void
+clutter_table_layout_compute_expand (ClutterLayoutManager *manager,
+ ClutterContainer *container,
+ ClutterActor *actor,
+ gboolean *x_expand_p,
+ gboolean *y_expand_p)
+{
+ ClutterLayoutMeta *meta;
+
+ meta = clutter_layout_manager_get_child_meta (manager, container, actor);
+
+ if (x_expand_p != NULL)
+ *x_expand_p = CLUTTER_TABLE_CHILD (meta)->x_expand ||
+ clutter_actor_needs_x_expand (actor);
+
+ if (y_expand_p != NULL)
+ *y_expand_p = CLUTTER_TABLE_CHILD (meta)->y_expand ||
+ clutter_actor_needs_y_expand (actor);
+
+ g_debug ("Computing expand for '%s': x:%s, y:%s",
+ G_OBJECT_TYPE_NAME (actor),
+ x_expand_p != NULL ? (*x_expand_p ? "Y" : "N") : "N",
+ y_expand_p != NULL ? (*y_expand_p ? "Y" : "N") : "N");
+}
+
+static void
clutter_table_layout_set_property (GObject *gobject,
guint prop_id,
const GValue *value,
@@ -1722,6 +1761,7 @@ clutter_table_layout_class_init (ClutterTableLayoutClass *klass)
clutter_table_layout_get_child_meta_type;
layout_class->begin_animation = clutter_table_layout_begin_animation;
layout_class->end_animation = clutter_table_layout_end_animation;
+ layout_class->compute_expand = clutter_table_layout_compute_expand;
g_type_class_add_private (klass, sizeof (ClutterTableLayoutPrivate));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]