From 89cfc182a2fff97903799db0fd547631258e9056 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 8 Apr 2023 03:47:13 +0200 Subject: listitemmanager: Add gtk_list_tile_set_type() --- gtk/gtklistitemmanager.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/gtk/gtklistitemmanager.c b/gtk/gtklistitemmanager.c index 346464289b..1be9ed0dce 100644 --- a/gtk/gtklistitemmanager.c +++ b/gtk/gtklistitemmanager.c @@ -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; } } -- cgit v1.2.1