[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25431] trunk/blender/source/blender: Fix [#20397] Saving with F2 on multiple windows layout crashes

Matt Ebb matt at mke3.net
Thu Dec 17 11:01:09 CET 2009


Revision: 25431
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25431
Author:   broken
Date:     2009-12-17 11:01:08 +0100 (Thu, 17 Dec 2009)

Log Message:
-----------
Fix [#20397] Saving with F2 on multiple windows layout crashes

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_edit.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c	2009-12-17 09:23:47 UTC (rev 25430)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c	2009-12-17 10:01:08 UTC (rev 25431)
@@ -1487,9 +1487,11 @@
 		
 		oldscreen= win->screen;
 
-		/* is there only 1 area? */
+		/* nothing wrong with having only 1 area, as far as I can see...
+		// is there only 1 area?
 		if(oldscreen->areabase.first==oldscreen->areabase.last)
 			return NULL;
+		*/
 		
 		oldscreen->full = SCREENFULL;
 		BLI_snprintf(newname, sizeof(newname), "%s-%s", oldscreen->id.name+2, "temp");

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-12-17 09:23:47 UTC (rev 25430)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-12-17 10:01:08 UTC (rev 25431)
@@ -997,13 +997,24 @@
 		case EVT_FILESELECT_OPEN: 
 		case EVT_FILESELECT_FULL_OPEN: 
 			{	
+				ScrArea *sa;
+				
+				/* sa can be null when window A is active, but mouse is over window B */
+				/* in this case, open file select in original window A */
+				if (handler->op_area == NULL) {
+					bScreen *screen = CTX_wm_screen(C);
+					sa = (ScrArea *)screen->areabase.first;
+				} else
+					sa = handler->op_area;
+					
 				if(event->val==EVT_FILESELECT_OPEN)
-					ED_area_newspace(C, handler->op_area, SPACE_FILE);
+					ED_area_newspace(C, sa, SPACE_FILE);
 				else
-					ED_screen_full_newspace(C, handler->op_area, SPACE_FILE);
+					ED_screen_full_newspace(C, sa, SPACE_FILE);	/* sets context */
 				
 				/* settings for filebrowser, sfile is not operator owner but sends events */
-				sfile= (SpaceFile*)CTX_wm_space_data(C);
+				sa = CTX_wm_area(C);
+				sfile= (SpaceFile*)sa->spacedata.first;
 				sfile->op= handler->op;
 
 				ED_fileselect_set_params(sfile);





More information about the Bf-blender-cvs mailing list