gridview: Simplify allocation code
It doesn't fix the bug I'm after, but it looks a lot better.
This commit is contained in:
committed by
Matthias Clasen
parent
1eabde4b6f
commit
de36e9d951
@@ -1028,44 +1028,58 @@ gtk_grid_view_size_allocate (GtkWidget *widget,
|
||||
x = - gtk_grid_view_update_adjustment (self, opposite_orientation);
|
||||
y = - gtk_grid_view_update_adjustment (self, self->orientation);
|
||||
|
||||
/* step 5: run the size_allocate loop */
|
||||
x = -x;
|
||||
y = -y;
|
||||
i = 0;
|
||||
row_height = 0;
|
||||
|
||||
for (cell = gtk_list_item_manager_get_first (self->item_manager);
|
||||
cell != NULL;
|
||||
cell = gtk_rb_tree_node_get_next (cell))
|
||||
{
|
||||
if (cell->parent.widget)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
y += row_height;
|
||||
row_height = cell->size;
|
||||
}
|
||||
row_height += cell->size;
|
||||
|
||||
gtk_grid_view_size_allocate_child (self,
|
||||
cell->parent.widget,
|
||||
x + ceil (self->column_width * i),
|
||||
y,
|
||||
ceil (self->column_width * (i + 1)) - ceil (self->column_width * i),
|
||||
row_height);
|
||||
i = (i + 1) % self->n_columns;
|
||||
i++;
|
||||
if (i >= self->n_columns)
|
||||
{
|
||||
y += row_height;
|
||||
i -= self->n_columns;
|
||||
row_height = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
i += cell->parent.n_items;
|
||||
if (i > self->n_columns)
|
||||
/* skip remaining row if we didn't start one */
|
||||
if (i > cell->parent.n_items && i >= self->n_columns)
|
||||
{
|
||||
i -= self->n_columns;
|
||||
y += row_height;
|
||||
row_height = cell->size;
|
||||
row_height = 0;
|
||||
}
|
||||
|
||||
if (i > self->n_columns)
|
||||
{
|
||||
guint unknown_rows = (i - 1) / self->n_columns;
|
||||
int unknown_height = unknown_rows * self->unknown_row_height;
|
||||
row_height -= unknown_height;
|
||||
y += unknown_height;
|
||||
i %= self->n_columns;
|
||||
}
|
||||
row_height += cell->size;
|
||||
|
||||
/* skip rows that are completely contained by this cell */
|
||||
if (i >= self->n_columns)
|
||||
{
|
||||
guint unknown_rows, unknown_height;
|
||||
|
||||
unknown_rows = i / self->n_columns;
|
||||
unknown_height = unknown_rows * self->unknown_row_height;
|
||||
row_height -= unknown_height;
|
||||
y += unknown_height;
|
||||
i %= self->n_columns;
|
||||
g_assert (row_height >= 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user