diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-09-01 04:52:03 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-09-01 04:52:03 +0400 |
commit | 47beb68a0fbeecf0135efd5a356b6ece03e24457 (patch) | |
tree | c5a67598779c89a42cb1292503e56d62475de1bd | |
parent | 04bbb6a0c7a7c8a6c55f1528e76132e7f5a38e6f (diff) |
Open recent list was arseabout, only adding files on save, rather then open.
This is problematic for a few reasons...
* I'd often save a blendfile only so it would appier in the open recent menu.
* Saving files (when you dont need to) makes access times less useful.
* binary diff's in SVN dont give any useful info. Sometimes I wasnt sure if I actually edited or saves for fast re-opening.
* Testing 2.4x files with animation data in 2.5 can loose info.
* Its not logical and other apps dont work this way.
Also made the recent file list in the file browser display the most recent item first (like the open recent menu).
-rw-r--r-- | source/blender/editors/space_file/file_panels.c | 18 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 6 |
2 files changed, 16 insertions, 8 deletions
diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index c48b3529389..24c3f9b4ca1 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -63,7 +63,7 @@ static void file_panel_cb(bContext *C, void *arg_entry, void *arg_unused) WM_operator_properties_free(&ptr); } -static void file_panel_category(const bContext *C, Panel *pa, FSMenuCategory category, short *nr, int icon, int allow_delete) +static void file_panel_category(const bContext *C, Panel *pa, FSMenuCategory category, short *nr, int icon, int allow_delete, int reverse) { SpaceFile *sfile= CTX_wm_space_file(C); uiBlock *block; @@ -71,7 +71,7 @@ static void file_panel_category(const bContext *C, Panel *pa, FSMenuCategory cat uiLayout *box, *col; struct FSMenu* fsmenu = fsmenu_get(); char *curdir= (sfile->params)? sfile->params->dir: ""; - int i, nentries = fsmenu_get_nentries(fsmenu, category); + int i, i_iter, nentries = fsmenu_get_nentries(fsmenu, category); /* reset each time */ *nr= -1; @@ -86,12 +86,16 @@ static void file_panel_category(const bContext *C, Panel *pa, FSMenuCategory cat box= uiLayoutBox(pa->layout); col= uiLayoutColumn(box, 1); - for (i=0; i< nentries;++i) { + for (i_iter=0; i_iter< nentries;++i_iter) { char dir[FILE_MAX]; char temp[FILE_MAX]; uiLayout* layout = uiLayoutRow(col, 0); - char *entry = fsmenu_get_entry(fsmenu, category, i); + char *entry; + i= reverse ? nentries-(i_iter+1) : i_iter; + + entry = fsmenu_get_entry(fsmenu, category, i); + /* set this list item as active if we have a match */ if(strcmp(curdir, entry) == 0) *nr= i; @@ -124,7 +128,7 @@ static void file_panel_system(const bContext *C, Panel *pa) SpaceFile *sfile= CTX_wm_space_file(C); if(sfile) - file_panel_category(C, pa, FS_CATEGORY_SYSTEM, &sfile->systemnr, ICON_DISK_DRIVE, 0); + file_panel_category(C, pa, FS_CATEGORY_SYSTEM, &sfile->systemnr, ICON_DISK_DRIVE, 0, 0); } static void file_panel_bookmarks(const bContext *C, Panel *pa) @@ -137,7 +141,7 @@ static void file_panel_bookmarks(const bContext *C, Panel *pa) uiItemO(row, "Add", ICON_ZOOMIN, "file.add_bookmark"); uiItemL(row, NULL, 0); - file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, &sfile->bookmarknr, ICON_BOOKMARKS, 1); + file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, &sfile->bookmarknr, ICON_BOOKMARKS, 1, 0); } } @@ -146,7 +150,7 @@ static void file_panel_recent(const bContext *C, Panel *pa) SpaceFile *sfile= CTX_wm_space_file(C); if(sfile) - file_panel_category(C, pa, FS_CATEGORY_RECENT, &sfile->recentnr, ICON_FILE_FOLDER, 0); + file_panel_category(C, pa, FS_CATEGORY_RECENT, &sfile->recentnr, ICON_FILE_FOLDER, 0, 1); } diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 9c30c99bbdd..b98717c8629 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -96,6 +96,7 @@ #include "wm.h" #include "wm_window.h" +static void writeBlog(void); /* To be able to read files without windows closing, opening, moving we try to prepare for worst case: @@ -256,7 +257,10 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) if(retval==2) wm_init_userdef(); // in case a userdef is read from regular .blend - if (retval!=0) G.relbase_valid = 1; + if (retval!=0) { + G.relbase_valid = 1; + writeBlog(); + } // XXX undo_editmode_clear(); BKE_reset_undo(); |