Mercurial > geeqie
comparison src/view_file_list.c @ 801:9b676bb76a2e
various refresh and notification fixes
author | nadvornik |
---|---|
date | Sat, 07 Jun 2008 22:44:17 +0000 |
parents | a25b228978a0 |
children | 3cfc54c77b30 |
comparison
equal
deleted
inserted
replaced
800:a25b228978a0 | 801:9b676bb76a2e |
---|---|
140 work = work->next; | 140 work = work->next; |
141 } | 141 } |
142 return i; | 142 return i; |
143 } | 143 } |
144 | 144 |
145 static gboolean vflist_store_clear_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) | |
146 { | |
147 FileData *fd; | |
148 gtk_tree_model_get(model, iter, FILE_COLUMN_POINTER, &fd, -1); | |
149 file_data_unref(fd); | |
150 return FALSE; | |
151 } | |
152 | |
153 static void vflist_store_clear(ViewFile *vf) | |
154 { | |
155 GtkTreeModel *store; | |
156 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)); | |
157 gtk_tree_model_foreach(store, vflist_store_clear_cb, NULL); | |
158 gtk_tree_store_clear(GTK_TREE_STORE(store)); | |
159 } | |
145 | 160 |
146 void vflist_color_set(ViewFile *vf, FileData *fd, gint color_set) | 161 void vflist_color_set(ViewFile *vf, FileData *fd, gint color_set) |
147 { | 162 { |
148 GtkTreeModel *store; | 163 GtkTreeModel *store; |
149 GtkTreeIter iter; | 164 GtkTreeIter iter; |
791 else | 806 else |
792 { | 807 { |
793 gtk_tree_store_append(store, &new, parent_iter); | 808 gtk_tree_store_append(store, &new, parent_iter); |
794 } | 809 } |
795 | 810 |
796 vflist_setup_iter(vf, store, &new, fd); | 811 vflist_setup_iter(vf, store, &new, file_data_ref(fd)); |
797 vflist_setup_iter_recursive(vf, store, &new, fd->sidecar_files, selected); | 812 vflist_setup_iter_recursive(vf, store, &new, fd->sidecar_files, selected); |
798 | 813 |
799 if (g_list_find(selected, fd)) | 814 if (g_list_find(selected, fd)) |
800 { | 815 { |
801 /* renamed files - the same fd appears at different position - select it again*/ | 816 /* renamed files - the same fd appears at different position - select it again*/ |
806 | 821 |
807 done = TRUE; | 822 done = TRUE; |
808 } | 823 } |
809 else if (match > 0) | 824 else if (match > 0) |
810 { | 825 { |
826 file_data_unref(old_fd); | |
811 valid = gtk_tree_store_remove(store, &iter); | 827 valid = gtk_tree_store_remove(store, &iter); |
812 } | 828 } |
813 else | 829 else |
814 { | 830 { |
815 if (fd->version != old_version) | 831 if (fd->version != old_version) |
826 work = work->next; | 842 work = work->next; |
827 } | 843 } |
828 | 844 |
829 while (valid) | 845 while (valid) |
830 { | 846 { |
847 FileData *old_fd; | |
848 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &old_fd, -1); | |
849 file_data_unref(old_fd); | |
850 | |
831 valid = gtk_tree_store_remove(store, &iter); | 851 valid = gtk_tree_store_remove(store, &iter); |
832 } | 852 } |
833 } | 853 } |
834 | 854 |
835 void vflist_sort_set(ViewFile *vf, SortType type, gint ascend) | 855 void vflist_sort_set(ViewFile *vf, SortType type, gint ascend) |
1512 | 1532 |
1513 vflist_thumb_stop(vf); | 1533 vflist_thumb_stop(vf); |
1514 | 1534 |
1515 if (!vf->list) | 1535 if (!vf->list) |
1516 { | 1536 { |
1517 gtk_tree_store_clear(store); | 1537 vflist_store_clear(vf); |
1518 vf_send_update(vf); | 1538 vf_send_update(vf); |
1519 return; | 1539 return; |
1520 } | 1540 } |
1521 | 1541 |
1522 if (GTK_WIDGET_REALIZED(vf->listview) && | 1542 if (GTK_WIDGET_REALIZED(vf->listview) && |
1746 *----------------------------------------------------------------------------- | 1766 *----------------------------------------------------------------------------- |
1747 */ | 1767 */ |
1748 | 1768 |
1749 gint vflist_set_fd(ViewFile *vf, FileData *dir_fd) | 1769 gint vflist_set_fd(ViewFile *vf, FileData *dir_fd) |
1750 { | 1770 { |
1751 GtkTreeStore *store; | |
1752 | |
1753 if (!dir_fd) return FALSE; | 1771 if (!dir_fd) return FALSE; |
1754 if (vf->dir_fd == dir_fd) return TRUE; | 1772 if (vf->dir_fd == dir_fd) return TRUE; |
1755 | 1773 |
1756 file_data_unref(vf->dir_fd); | 1774 file_data_unref(vf->dir_fd); |
1757 vf->dir_fd = file_data_ref(dir_fd); | 1775 vf->dir_fd = file_data_ref(dir_fd); |
1758 | 1776 |
1759 /* force complete reload */ | 1777 /* force complete reload */ |
1760 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview))); | 1778 vflist_store_clear(vf); |
1761 gtk_tree_store_clear(store); | |
1762 | 1779 |
1763 filelist_free(vf->list); | 1780 filelist_free(vf->list); |
1764 vf->list = NULL; | 1781 vf->list = NULL; |
1765 | 1782 |
1766 return vf_refresh(vf); | 1783 return vf_refresh(vf); |