== filebrowser ==
authorAndrea Weikert <elubie@gmx.net>
Mon, 4 Apr 2011 20:32:39 +0000 (20:32 +0000)
committerAndrea Weikert <elubie@gmx.net>
Mon, 4 Apr 2011 20:32:39 +0000 (20:32 +0000)
Small fix for recent folders in filebrowser, didn't save correctly when too many folders in the list (more than the currently allowed 10), now skips the oldest entries.
Reported on IRC.

source/blender/editors/space_file/fsmenu.c

index 2174823..ffe1677 100644 (file)
@@ -232,7 +232,7 @@ void fsmenu_remove_entry(struct FSMenu* fsmenu, FSMenuCategory category, int idx
 void fsmenu_write_file(struct FSMenu* fsmenu, const char *filename)
 {
        FSMenuEntry *fsme= NULL;
-       int count=FSMENU_RECENT_MAX;
+       int nskip= 0;
 
        FILE *fp = fopen(filename, "w");
        if (!fp) return;
@@ -244,7 +244,11 @@ void fsmenu_write_file(struct FSMenu* fsmenu, const char *filename)
                }
        }
        fprintf(fp, "[Recent]\n");
-       for (fsme= fsmenu_get_category(fsmenu, FS_CATEGORY_RECENT); fsme && count; fsme= fsme->next, --count) {
+       nskip = fsmenu_get_nentries(fsmenu, FS_CATEGORY_RECENT) - FSMENU_RECENT_MAX;
+       // skip first entries if list too long
+       for (fsme= fsmenu_get_category(fsmenu, FS_CATEGORY_RECENT); fsme && (nskip>0); fsme= fsme->next, --nskip)
+               ;
+       for (; fsme; fsme= fsme->next) {
                if (fsme->path && fsme->save) {
                        fprintf(fp, "%s\n", fsme->path);
                }