[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31566] trunk/blender/source/blender: bugfix [#23456] context.main.filepath lost after undo

Campbell Barton ideasman42 at gmail.com
Wed Aug 25 06:03:50 CEST 2010


Revision: 31566
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31566
Author:   campbellbarton
Date:     2010-08-25 06:03:38 +0200 (Wed, 25 Aug 2010)

Log Message:
-----------
bugfix [#23456] context.main.filepath lost after undo
 G.sce was being restored after undo but not G.main->name
 also changed reading a new file so G.main->name gets set to the startup.blend even if its not on the disk, not ideal but would set to <memory2> otherwise.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/blender.c
    trunk/blender/source/blender/windowmanager/intern/wm_files.c

Modified: trunk/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/blender.c	2010-08-25 03:44:13 UTC (rev 31565)
+++ trunk/blender/source/blender/blenkernel/intern/blender.c	2010-08-25 04:03:38 UTC (rev 31566)
@@ -460,13 +460,16 @@
 
 static int read_undosave(bContext *C, UndoElem *uel)
 {
-	char scestr[FILE_MAXDIR+FILE_MAXFILE];
+	char scestr[FILE_MAXDIR+FILE_MAXFILE]; /* we should eventually just use G.main->name */
+	char mainstr[FILE_MAXDIR+FILE_MAXFILE];
 	int success=0, fileflags;
 	
 	/* This is needed so undoing/redoing doesnt crash with threaded previews going */
 	WM_jobs_stop_all(CTX_wm_manager(C));
 	
 	strcpy(scestr, G.sce);	/* temporal store */
+	strcpy(mainstr, G.main->name);	/* temporal store */
+
 	fileflags= G.fileflags;
 	G.fileflags |= G_FILE_NO_UI;
 
@@ -476,7 +479,8 @@
 		success= BKE_read_file_from_memfile(C, &uel->memfile, NULL);
 
 	/* restore */
-	strcpy(G.sce, scestr);
+	strcpy(G.sce, scestr); /* restore */
+	strcpy(G.main->name, mainstr); /* restore */
 	G.fileflags= fileflags;
 
 	if(success)

Modified: trunk/blender/source/blender/windowmanager/intern/wm_files.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_files.c	2010-08-25 03:44:13 UTC (rev 31565)
+++ trunk/blender/source/blender/windowmanager/intern/wm_files.c	2010-08-25 04:03:38 UTC (rev 31566)
@@ -334,6 +334,9 @@
 /* called on startup,  (context entirely filled with NULLs) */
 /* or called for 'New File' */
 /* op can be NULL */
+/* note: G.sce is used to store the last saved path so backup and restore after loading
+ * G.main->name is similar to G.sce but when loading from memory set the name to startup.blend 
+ * ...this could be changed but seems better then setting to "" */
 int WM_read_homefile(bContext *C, wmOperator *op)
 {
 	ListBase wmbase;
@@ -376,7 +379,8 @@
 	WM_check(C); /* opens window(s), checks keymaps */
 
 	strcpy(G.sce, scestr); /* restore */
-	
+	strcpy(G.main->name, tstr); /* this is wrong when loading from memory but better then leaving as-is */
+
 	wm_init_userdef(C);
 	
 	/* When loading factory settings, the reset solid OpenGL lights need to be applied. */





More information about the Bf-blender-cvs mailing list