summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimo@endlessm.com>2013-09-18 14:21:10 -0700
committerCosimo Cecchi <cosimo@endlessm.com>2013-09-18 14:31:02 -0700
commitdf84b69ec31120f35d732e1ebaa56fed414f6625 (patch)
tree867d56016aa91335158d8cf1b53f00c4ca8ed35b
parentee66c5fe34dea53ac64505cb74fbcca57a2f26d4 (diff)
Account for previous cell when switching row
Previously, we were missing a cell while switching to a new row in the preferred height request.
-rw-r--r--endless/eosflexygrid.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/endless/eosflexygrid.c b/endless/eosflexygrid.c
index cbd9357..cdcf730 100644
--- a/endless/eosflexygrid.c
+++ b/endless/eosflexygrid.c
@@ -366,7 +366,7 @@ eos_flexy_grid_get_preferred_height_for_width (GtkWidget *widget,
iter = g_sequence_iter_next (iter))
{
EosFlexyGridCell *cell = g_sequence_get (iter);
- int cell_height;
+ int cell_height, cell_width;
if (!gtk_widget_get_visible (GTK_WIDGET (cell)))
continue;
@@ -377,35 +377,38 @@ eos_flexy_grid_get_preferred_height_for_width (GtkWidget *widget,
{
case EOS_FLEXY_SHAPE_SMALL:
/* b1 */
- row_width += cell_size;
+ cell_width = cell_size;
cell_height = cell_size;
break;
case EOS_FLEXY_SHAPE_MEDIUM_HORIZONTAL:
/* b2h */
- row_width += cell_size * 2;
+ cell_width = cell_size * 2;
cell_height = cell_size;
break;
case EOS_FLEXY_SHAPE_MEDIUM_VERTICAL:
/* b2v */
- row_width += cell_size;
+ cell_width = cell_size;
cell_height = cell_size * 2;
break;
case EOS_FLEXY_SHAPE_LARGE:
/* b4 */
- row_width += cell_size * 2;
+ cell_width = cell_size * 2;
cell_height = cell_size * 2;
break;
}
+ row_width += cell_width;
+
if (row_width > max_row_width)
{
height = row * row_height;
row += 1;
- row_width = 0;
+ row_width = cell_width;
+ row_height = MAX (cell_height, cell_size);
}
else
row_height = MAX (row_height, cell_height);