Bugfix #26687
authorTon Roosendaal <ton@blender.org>
Thu, 31 Mar 2011 17:14:31 +0000 (17:14 +0000)
committerTon Roosendaal <ton@blender.org>
Thu, 31 Mar 2011 17:14:31 +0000 (17:14 +0000)
Using "New scene" operator was setting the screen->scene pointer
after the undo-push, messing up redos or undos immediate after.

source/blender/editors/screen/screen_ops.c

index afda6c5088f3a3c9659792f896452eb00a4e29b7..bff92df430cc45c1258a4013f311e0245afd2bc4 100644 (file)
@@ -3162,6 +3162,7 @@ static void SCREEN_OT_delete(wmOperatorType *ot)
 static int scene_new_exec(bContext *C, wmOperator *op)
 {
        Scene *newscene, *scene= CTX_data_scene(C);
+       bScreen *screen= CTX_wm_screen(C);
        Main *bmain= CTX_data_main(C);
        int type= RNA_enum_get(op->ptr, "type");
 
@@ -3180,8 +3181,12 @@ static int scene_new_exec(bContext *C, wmOperator *op)
                }
        }
        
+       /* this notifier calls ED_screen_set_scene, doing a lot of UI stuff, not for inside event loops */
        WM_event_add_notifier(C, NC_SCENE|ND_SCENEBROWSE, newscene);
        
+       if(screen)
+               screen->scene= newscene;
+       
        return OPERATOR_FINISHED;
 }