From: Benjamin Otte Date: Sat, 8 Apr 2023 01:47:13 +0000 (+0200) Subject: listitemmanager: Add gtk_list_tile_set_type() X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~287^2~14 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=88d5c9a5e1d663e6d3265ec89307d320d796823e;p=gtk4.git listitemmanager: Add gtk_list_tile_set_type() --- 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; } }