Mercurial > geeqie
comparison src/filedata.c @ 965:cbdabb499684
keep files with non-zero marks in memory
author | nadvornik |
---|---|
date | Sat, 16 Aug 2008 20:57:40 +0000 |
parents | ba1d3c4bc0cd |
children | c24a297efbef |
comparison
equal
deleted
inserted
replaced
964:ba1d3c4bc0cd | 965:cbdabb499684 |
---|---|
1059 return !!(fd->marks & (1 << n)); | 1059 return !!(fd->marks & (1 << n)); |
1060 } | 1060 } |
1061 | 1061 |
1062 void file_data_set_mark(FileData *fd, gint n, gboolean value) | 1062 void file_data_set_mark(FileData *fd, gint n, gboolean value) |
1063 { | 1063 { |
1064 guint old = fd->marks; | |
1064 if (!value == !(fd->marks & (1 << n))) return; | 1065 if (!value == !(fd->marks & (1 << n))) return; |
1065 | 1066 |
1066 fd->marks = fd->marks ^ (1 << n); | 1067 fd->marks = fd->marks ^ (1 << n); |
1068 | |
1069 if (old && !fd->marks) /* keep files with non-zero marks in memory */ | |
1070 { | |
1071 file_data_unref(fd); | |
1072 } | |
1073 else if (!old && fd->marks) | |
1074 { | |
1075 file_data_ref(fd); | |
1076 } | |
1077 | |
1067 file_data_increment_version(fd); | 1078 file_data_increment_version(fd); |
1068 file_data_send_notification(fd, NOTIFY_TYPE_INTERNAL); | 1079 file_data_send_notification(fd, NOTIFY_TYPE_INTERNAL); |
1069 } | 1080 } |
1070 | 1081 |
1071 gboolean file_data_filter_marks(FileData *fd, guint filter) | 1082 gboolean file_data_filter_marks(FileData *fd, guint filter) |