tile = gtk_list_item_manager_ensure_split (self, tile, offset);
tile = gtk_rb_tree_insert_before (self->items, tile);
+ tile->type = GTK_LIST_TILE_ITEM;
tile->n_items = n_items;
gtk_rb_tree_node_mark_dirty (tile);
GtkListTile *first,
GtkListTile *second)
{
- if (first->widget || second->widget)
+ if (first->widget || second->widget ||
+ first->type != GTK_LIST_TILE_ITEM || second->type != GTK_LIST_TILE_ITEM)
return FALSE;
first->n_items += second->n_items;
GtkListTile *result;
g_assert (n_items <= tile->n_items);
+ g_assert (tile->type == GTK_LIST_TILE_ITEM);
result = gtk_rb_tree_insert_after (self->items, tile);
+ result->type = GTK_LIST_TILE_ITEM;
result->n_items = tile->n_items - n_items;
tile->n_items = n_items;
gtk_rb_tree_node_mark_dirty (tile);
typedef struct _GtkListTileAugment GtkListTileAugment;
typedef struct _GtkListItemTracker GtkListItemTracker;
+typedef enum
+{
+ GTK_LIST_TILE_ITEM
+} GtkListTileType;
+
struct _GtkListTile
{
+ GtkListTileType type;
GtkWidget *widget;
guint n_items;
/* area occupied by tile. May be empty if tile has no allcoation */