FileData *file_data_disconnect_sidecar_file(FileData *target, FileData *sfd);
+void file_data_increment_version(FileData *fd)
+{
+ fd->version++;
+ if (fd->parent) fd->parent->version++;
+}
+
+
static void file_data_set_path(FileData *fd, const gchar *path)
{
fd->date = st->st_mtime;
if (fd->pixbuf) g_object_unref(fd->pixbuf);
fd->pixbuf = NULL;
+ file_data_increment_version(fd);
}
work = fd->sidecar_files;
fd->original_path = g_strdup(fd->change->dest);
g_hash_table_insert(file_data_pool, fd->original_path, fd);
}
+ file_data_increment_version(fd);
}
gint file_data_sc_apply_ci(FileData *fd)
enum {
FILE_COLUMN_POINTER = 0,
+ FILE_COLUMN_VERSION,
FILE_COLUMN_THUMB,
FILE_COLUMN_NAME,
FILE_COLUMN_SIDECARS,
size = text_from_size(fd->size);
gtk_tree_store_set(store, iter, FILE_COLUMN_POINTER, fd,
+ FILE_COLUMN_VERSION, fd->version,
FILE_COLUMN_THUMB, (VFLIST_INFO(vf, thumbs_enabled)) ? fd->pixbuf : NULL,
FILE_COLUMN_NAME, fd->name,
FILE_COLUMN_SIDECARS, sidecars,
case STM_MODE_TOGGLE: fd->marks[n] = !fd->marks[n];
break;
}
+
+ file_data_increment_version(fd);
gtk_tree_store_set(GTK_TREE_STORE(store), &iter, FILE_COLUMN_MARKS + n, fd->marks[n], -1);
while (!done)
{
FileData *old_fd = NULL;
+ gint old_version = 0;
if (valid)
{
- gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &old_fd, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(store), &iter,
+ FILE_COLUMN_POINTER, &old_fd,
+ FILE_COLUMN_VERSION, &old_version,
+ -1);
if (fd == old_fd)
{
}
else
{
- vflist_setup_iter_with_sidecars(vf, store, &iter, fd);
+ if (old_version != fd->version)
+ vflist_setup_iter_with_sidecars(vf, store, &iter, fd);
if (valid) valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, col_idx, &mark, -1);
mark = !mark;
fd->marks[col_idx - FILE_COLUMN_MARKS] = mark;
+ file_data_increment_version(fd);
gtk_tree_store_set(store, &iter, col_idx, mark, -1);
gtk_tree_path_free(path);
VFLIST_INFO(vf, select_idle_id) = -1;
flist_types[FILE_COLUMN_POINTER] = G_TYPE_POINTER;
+ flist_types[FILE_COLUMN_VERSION] = G_TYPE_INT;
flist_types[FILE_COLUMN_THUMB] = GDK_TYPE_PIXBUF;
flist_types[FILE_COLUMN_NAME] = G_TYPE_STRING;
flist_types[FILE_COLUMN_SIDECARS] = G_TYPE_STRING;