Merge branch 'gtkfilesystemmodel-emit-items-changed-on-modifying-attributes' into 'main'

filesystemmodel: Emit items-changed when modifying attributes

Closes #5758

See merge request GNOME/gtk!5853
This commit is contained in:
Matthias Clasen 2023-04-22 05:54:58 +00:00
commit 6d0659a83a

View File

@ -384,6 +384,7 @@ gtk_file_system_model_refilter_all (GtkFileSystemModel *model)
for (i = 0; i < model->files->len; i++) for (i = 0; i < model->files->len; i++)
node_compute_visibility_and_filters (model, i); node_compute_visibility_and_filters (model, i);
g_list_model_items_changed (G_LIST_MODEL (model), 0, model->files->len, model->files->len);
model->filter_on_thaw = FALSE; model->filter_on_thaw = FALSE;
thaw_updates (model); thaw_updates (model);
} }
@ -408,6 +409,7 @@ thaw_updates (GtkFileSystemModel *model)
if (stuff_added) if (stuff_added)
{ {
guint i; guint i;
guint changed_idx = G_MAXUINT;
for (i = 0; i < model->files->len; i++) for (i = 0; i < model->files->len; i++)
{ {
@ -415,9 +417,17 @@ thaw_updates (GtkFileSystemModel *model)
if (!node->frozen_add) if (!node->frozen_add)
continue; continue;
node->frozen_add = FALSE; node->frozen_add = FALSE;
node_compute_visibility_and_filters (model, i); node_compute_visibility_and_filters (model, i);
if (changed_idx == G_MAXUINT)
changed_idx = i;
} }
if (changed_idx != G_MAXUINT)
g_list_model_items_changed (G_LIST_MODEL (model), changed_idx,
model->files->len - changed_idx,
model->files->len - changed_idx);
} }
} }
@ -448,9 +458,10 @@ add_file (GtkFileSystemModel *model,
position = model->files->len - 1; position = model->files->len - 1;
if (!model->frozen) if (!model->frozen)
node_compute_visibility_and_filters (model, position); {
node_compute_visibility_and_filters (model, position);
g_list_model_items_changed (G_LIST_MODEL (model), position, 0, 1); g_list_model_items_changed (G_LIST_MODEL (model), position, 0, 1);
}
} }
static void static void