[clutter] grid: Use the orientation of the request
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] grid: Use the orientation of the request
- Date: Sat, 29 Aug 2015 19:38:57 +0000 (UTC)
commit dea5057fbd7e9e2f0199ec6df6e5716635f0e5ee
Author: Emmanuele Bassi <ebassi gnome org>
Date: Sat Aug 29 20:19:51 2015 +0100
grid: Use the orientation of the request
We use the orientation of the grid to get the preferred size of the
layout, but we should be using the orientation of the request instead.
The preferred width has an orizontal orientation, and the preferred
height has a vertical orientation.
This allows us to refactor the get_preferred_* implementation into a
separate function.
clutter/clutter-grid-layout.c | 69 ++++++++++++++++++++++++----------------
1 files changed, 41 insertions(+), 28 deletions(-)
---
diff --git a/clutter/clutter-grid-layout.c b/clutter/clutter-grid-layout.c
index e462153..ad03203 100644
--- a/clutter/clutter-grid-layout.c
+++ b/clutter/clutter-grid-layout.c
@@ -1289,59 +1289,72 @@ clutter_grid_layout_set_container (ClutterLayoutManager *self,
}
static void
-clutter_grid_layout_get_preferred_width (ClutterLayoutManager *self,
+clutter_grid_layout_get_size_for_size (ClutterGridLayout *self,
+ ClutterOrientation orientation,
+ float size,
+ float *minimum,
+ float *natural)
+{
+ ClutterGridRequest request;
+ ClutterGridLines *lines;
+ float min_size, nat_size;
+
+ request.grid = self;
+ clutter_grid_request_update_attach (&request);
+ clutter_grid_request_count_lines (&request);
+
+ lines = &request.lines[0];
+ lines->lines = g_newa (ClutterGridLine, lines->max - lines->min);
+ memset (lines->lines, 0, (lines->max - lines->min) * sizeof (ClutterGridLine));
+
+ lines = &request.lines[1];
+ lines->lines = g_newa (ClutterGridLine, lines->max - lines->min);
+ memset (lines->lines, 0, (lines->max - lines->min) * sizeof (ClutterGridLine));
+
+ clutter_grid_request_run (&request, 1 - orientation, FALSE);
+ clutter_grid_request_sum (&request, 1 - orientation, &min_size, &nat_size);
+ clutter_grid_request_allocate (&request, 1 - orientation, MAX (size, nat_size));
+
+ clutter_grid_request_run (&request, orientation, TRUE);
+ clutter_grid_request_sum (&request, orientation, minimum, natural);
+}
+
+static void
+clutter_grid_layout_get_preferred_width (ClutterLayoutManager *manager,
ClutterContainer *container,
gfloat for_height,
gfloat *min_width_p,
gfloat *nat_width_p)
{
- ClutterGridLayoutPrivate *priv = CLUTTER_GRID_LAYOUT (self)->priv;
- ClutterGridRequest request;
- ClutterGridLines *lines;
+ ClutterGridLayout *self = CLUTTER_GRID_LAYOUT (manager);
if (min_width_p)
*min_width_p = 0.0f;
if (nat_width_p)
*nat_width_p = 0.0f;
- request.grid = CLUTTER_GRID_LAYOUT (self);
- clutter_grid_request_update_attach (&request);
- clutter_grid_request_count_lines (&request);
- lines = &request.lines[priv->orientation];
- lines->lines = g_newa (ClutterGridLine, lines->max - lines->min);
- memset (lines->lines, 0, (lines->max - lines->min) * sizeof (ClutterGridLine));
-
- clutter_grid_request_run (&request, priv->orientation, FALSE);
- clutter_grid_request_sum (&request, priv->orientation,
- min_width_p, nat_width_p);
+ clutter_grid_layout_get_size_for_size (self, CLUTTER_ORIENTATION_HORIZONTAL,
+ for_height,
+ min_width_p, nat_width_p);
}
static void
-clutter_grid_layout_get_preferred_height (ClutterLayoutManager *self,
+clutter_grid_layout_get_preferred_height (ClutterLayoutManager *manager,
ClutterContainer *container,
gfloat for_width,
gfloat *min_height_p,
gfloat *nat_height_p)
{
- ClutterGridLayoutPrivate *priv = CLUTTER_GRID_LAYOUT (self)->priv;
- ClutterGridRequest request;
- ClutterGridLines *lines;
+ ClutterGridLayout *self = CLUTTER_GRID_LAYOUT (manager);
if (min_height_p)
*min_height_p = 0.0f;
if (nat_height_p)
*nat_height_p = 0.0f;
- request.grid = CLUTTER_GRID_LAYOUT (self);
- clutter_grid_request_update_attach (&request);
- clutter_grid_request_count_lines (&request);
- lines = &request.lines[priv->orientation];
- lines->lines = g_newa (ClutterGridLine, lines->max - lines->min);
- memset (lines->lines, 0, (lines->max - lines->min) * sizeof (ClutterGridLine));
-
- clutter_grid_request_run (&request, priv->orientation, FALSE);
- clutter_grid_request_sum (&request, priv->orientation,
- min_height_p, nat_height_p);
+ clutter_grid_layout_get_size_for_size (self, CLUTTER_ORIENTATION_VERTICAL,
+ for_width,
+ min_height_p, nat_height_p);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]