diff options
author | Benjamin Otte <otte@redhat.com> | 2023-04-08 03:47:13 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2023-04-11 15:59:43 +0200 |
commit | 89cfc182a2fff97903799db0fd547631258e9056 (patch) | |
tree | 49430408e684298be990c2914b8553394894cac7 | |
parent | c51d82f444adfa2b7e2b47d453186e3c06e3a795 (diff) | |
download | gtk+-89cfc182a2fff97903799db0fd547631258e9056.tar.gz |
listitemmanager: Add gtk_list_tile_set_type()
-rw-r--r-- | gtk/gtklistitemmanager.c | 26 |
1 files 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 @@ -603,6 +603,17 @@ gtk_list_tile_set_area_size (GtkListItemManager *self, } 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; } } |