summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2023-04-08 03:47:13 +0200
committerBenjamin Otte <otte@redhat.com>2023-04-11 15:59:43 +0200
commit89cfc182a2fff97903799db0fd547631258e9056 (patch)
tree49430408e684298be990c2914b8553394894cac7
parentc51d82f444adfa2b7e2b47d453186e3c06e3a795 (diff)
downloadgtk+-89cfc182a2fff97903799db0fd547631258e9056.tar.gz
listitemmanager: Add gtk_list_tile_set_type()
-rw-r--r--gtk/gtklistitemmanager.c26
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;
}
}