gridview: Add support for sections

This commit is contained in:
Benjamin Otte
2022-02-23 03:52:09 +01:00
parent 4a8d5d33df
commit 49616f7d00
3 changed files with 696 additions and 300 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -57,6 +57,13 @@ void gtk_grid_view_set_factory (GtkGridView
GDK_AVAILABLE_IN_ALL
GtkListItemFactory *
gtk_grid_view_get_factory (GtkGridView *self);
GDK_AVAILABLE_IN_4_8
void gtk_grid_view_set_section_factory (GtkGridView *self,
GtkListItemFactory *factory);
GDK_AVAILABLE_IN_4_8
GtkListItemFactory *
gtk_grid_view_get_section_factory (GtkGridView *self);
GDK_AVAILABLE_IN_ALL
guint gtk_grid_view_get_min_columns (GtkGridView *self);
GDK_AVAILABLE_IN_ALL

View File

@@ -639,10 +639,17 @@ gtk_list_item_manager_split_item (GtkListItemManager *self,
GtkListItemManagerItem *item = itemp;
GtkListItemManagerItem *new_item;
g_assert (size > 0 && size < item->n_items);
g_assert (size <= item->n_items);
new_item = gtk_rb_tree_insert_after (self->items, item);
new_item->n_items = item->n_items - size;
if (size == 0)
{
new_item->widget = item->widget;
item->widget = NULL;
new_item->section_header = item->section_header;
item->section_header = NULL;
}
gtk_rb_tree_node_mark_dirty (new_item);
item->n_items = size;
gtk_rb_tree_node_mark_dirty (item);