From: Benjamin Otte Date: Wed, 5 Apr 2023 00:49:03 +0000 (+0200) Subject: listitemmanager: Add a type to tiles X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~287^2~21 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=35543f60d9ffd2466385cfd911d67044771748a4;p=gtk4.git listitemmanager: Add a type to tiles There's only one type for now, but hey, you have to start somewhere. --- diff --git a/gtk/gtklistitemmanager.c b/gtk/gtklistitemmanager.c index 8ef33b5def..e73b1512bf 100644 --- a/gtk/gtklistitemmanager.c +++ b/gtk/gtklistitemmanager.c @@ -621,6 +621,7 @@ gtk_list_item_manager_add_items (GtkListItemManager *self, 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); @@ -632,7 +633,8 @@ gtk_list_item_manager_merge_list_items (GtkListItemManager *self, 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; @@ -666,8 +668,10 @@ gtk_list_tile_split (GtkListItemManager *self, 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); diff --git a/gtk/gtklistitemmanagerprivate.h b/gtk/gtklistitemmanagerprivate.h index 44a9ac82ea..a82e686266 100644 --- a/gtk/gtklistitemmanagerprivate.h +++ b/gtk/gtklistitemmanagerprivate.h @@ -43,8 +43,14 @@ typedef struct _GtkListTile GtkListTile; 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 */