listitemmanager: Add gtk_list_tile_set_type()

This commit is contained in:
Benjamin Otte
2023-04-08 03:47:13 +02:00
parent 6df8eafc3a
commit 88d5c9a5e1

View File

@@ -602,6 +602,17 @@ gtk_list_tile_set_area_size (GtkListItemManager *self,
gtk_rb_tree_node_mark_dirty (tile);
}
static void
gtk_list_tile_set_type (GtkListTile *tile,
GtkListTileType type)
{
if (tile->type == type)
return;
tile->type = type;
gtk_rb_tree_node_mark_dirty (tile);
}
static void
gtk_list_item_tracker_unset_position (GtkListItemManager *self,
GtkListItemTracker *tracker)
@@ -748,10 +759,8 @@ gtk_list_item_manager_remove_items (GtkListItemManager *self,
case GTK_LIST_TILE_UNMATCHED_FOOTER:
if (header)
{
header->type = GTK_LIST_TILE_REMOVED;
gtk_rb_tree_node_mark_dirty (header);
tile->type = GTK_LIST_TILE_REMOVED;
gtk_rb_tree_node_mark_dirty (tile);
gtk_list_tile_set_type (header, GTK_LIST_TILE_REMOVED);
gtk_list_tile_set_type (tile, GTK_LIST_TILE_REMOVED);
header = NULL;
}
break;
@@ -771,8 +780,7 @@ gtk_list_item_manager_remove_items (GtkListItemManager *self,
tile->widget = NULL;
n_items -= tile->n_items;
tile->n_items = 0;
tile->type = GTK_LIST_TILE_REMOVED;
gtk_rb_tree_node_mark_dirty (tile);
gtk_list_tile_set_type (tile, GTK_LIST_TILE_REMOVED);
break;
default:
@@ -791,10 +799,8 @@ gtk_list_item_manager_remove_items (GtkListItemManager *self,
{
if (tile->type == GTK_LIST_TILE_FOOTER || tile->type == GTK_LIST_TILE_UNMATCHED_FOOTER)
{
header->type = GTK_LIST_TILE_REMOVED;
gtk_rb_tree_node_mark_dirty (header);
tile->type = GTK_LIST_TILE_REMOVED;
gtk_rb_tree_node_mark_dirty (tile);
gtk_list_tile_set_type (header, GTK_LIST_TILE_REMOVED);
gtk_list_tile_set_type (tile, GTK_LIST_TILE_REMOVED);
break;
}
}