Mercurial > geeqie
diff src/view_file_list.c @ 763:81f9e8dbb4bf
improved infrastructure for tracing changes, optimized vflist_populate_view
author | nadvornik |
---|---|
date | Wed, 28 May 2008 22:12:10 +0000 |
parents | e6927cef8541 |
children | 110462fdf31b |
line wrap: on
line diff
--- a/src/view_file_list.c Tue May 27 18:46:34 2008 +0000 +++ b/src/view_file_list.c Wed May 28 22:12:10 2008 +0000 @@ -34,6 +34,7 @@ enum { FILE_COLUMN_POINTER = 0, + FILE_COLUMN_VERSION, FILE_COLUMN_THUMB, FILE_COLUMN_NAME, FILE_COLUMN_SIDECARS, @@ -717,6 +718,7 @@ 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, @@ -1418,6 +1420,8 @@ 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); @@ -1496,10 +1500,14 @@ 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) { @@ -1540,7 +1548,8 @@ } 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); @@ -1701,6 +1710,7 @@ 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); @@ -1783,6 +1793,7 @@ 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;