[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50681] trunk/blender/source/blender/ editors/space_file: fix [#32564] Entries in recent list (file select dialog ) don't get pushed to top if used again

Campbell Barton ideasman42 at gmail.com
Mon Sep 17 04:19:45 CEST 2012


Revision: 50681
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50681
Author:   campbellbarton
Date:     2012-09-17 02:19:41 +0000 (Mon, 17 Sep 2012)
Log Message:
-----------
fix [#32564] Entries in recent list (file select dialog) don't get pushed to top if used again

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_file/file_ops.c
    trunk/blender/source/blender/editors/space_file/fsmenu.c
    trunk/blender/source/blender/editors/space_file/fsmenu.h

Modified: trunk/blender/source/blender/editors/space_file/file_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/file_ops.c	2012-09-17 02:02:23 UTC (rev 50680)
+++ trunk/blender/source/blender/editors/space_file/file_ops.c	2012-09-17 02:19:41 UTC (rev 50681)
@@ -770,8 +770,9 @@
 
 		file_sfile_to_operator(op, sfile, filepath);
 
-		if (BLI_exists(sfile->params->dir))
-			fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir, FS_INSERT_SAVE);
+		if (BLI_exists(sfile->params->dir)) {
+			fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir, FS_INSERT_SAVE | FS_INSERT_FIRST);
+		}
 
 		BLI_make_file_string(G.main->name, filepath, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_BOOKMARK_FILE);
 		fsmenu_write_file(fsmenu_get(), filepath);

Modified: trunk/blender/source/blender/editors/space_file/fsmenu.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/fsmenu.c	2012-09-17 02:02:23 UTC (rev 50680)
+++ trunk/blender/source/blender/editors/space_file/fsmenu.c	2012-09-17 02:19:41 UTC (rev 50681)
@@ -164,14 +164,22 @@
 	FSMenuEntry *prev;
 	FSMenuEntry *fsme;
 	FSMenuEntry *fsms;
+	FSMenuEntry *fsms_first;
 
 	fsms = fsmenu_get_category(fsmenu, category);
-	prev = fsme = fsms;
+	prev = fsme = fsms_first = fsms;
 
 	for (; fsme; prev = fsme, fsme = fsme->next) {
 		if (fsme->path) {
 			const int cmp_ret = BLI_path_cmp(path, fsme->path);
 			if (cmp_ret == 0) {
+				if (FS_INSERT_FIRST) {
+					if (fsme != fsms_first) {
+						prev->next = fsme->next;
+						fsme->next = fsms_first;
+						fsmenu_set_category(fsmenu, category, fsme);
+					}
+				}
 				return;
 			}
 			else if ((flag & FS_INSERT_SORTED) && cmp_ret < 0) {

Modified: trunk/blender/source/blender/editors/space_file/fsmenu.h
===================================================================
--- trunk/blender/source/blender/editors/space_file/fsmenu.h	2012-09-17 02:02:23 UTC (rev 50680)
+++ trunk/blender/source/blender/editors/space_file/fsmenu.h	2012-09-17 02:19:41 UTC (rev 50681)
@@ -45,7 +45,8 @@
 
 typedef enum FSMenuInsert {
 	FS_INSERT_SORTED = (1 << 0),
-	FS_INSERT_SAVE   = (1 << 1)
+	FS_INSERT_SAVE   = (1 << 1),
+	FS_INSERT_FIRST  = (1 << 2)   /* moves the item to the front of the list when its already there */
 } FSMenuInsert;
 
 struct FSMenu;




More information about the Bf-blender-cvs mailing list