diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/object/object_edit.c | 4 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_interface.c | 5 | ||||
-rw-r--r-- | source/blender/windowmanager/WM_api.h | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_init_exit.c | 15 | ||||
-rw-r--r-- | source/creator/creator.c | 15 |
5 files changed, 24 insertions, 17 deletions
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 9ef1fafff82..54fa3f51eb6 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -499,6 +499,10 @@ static int editmode_toggle_poll(bContext *C) { Object *ob = CTX_data_active_object(C); + /* covers proxies too */ + if(ob->data==NULL || ((ID *)ob->data)->lib) + return 0; + return ob && (ob->type == OB_MESH || ob->type == OB_ARMATURE || ob->type == OB_FONT || ob->type == OB_MBALL || ob->type == OB_LATTICE || ob->type == OB_SURF || diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 2fcb36f6d5b..2c1edc965e9 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -698,8 +698,13 @@ int BPY_button_eval(bContext *C, char *expr, double *value) void BPY_load_user_modules(bContext *C) { PyGILState_STATE gilstate; + Main *bmain= CTX_data_main(C); Text *text; + /* can happen on file load */ + if(bmain==NULL) + return; + bpy_context_set(C, &gilstate); for(text=CTX_data_main(C)->text.first; text; text= text->id.next) { diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index d2b67142eb5..94cd6ed85a0 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -50,7 +50,7 @@ typedef struct wmJob wmJob; /* general API */ void WM_setprefsize (int stax, int stay, int sizx, int sizy); -void WM_init (struct bContext *C); +void WM_init (struct bContext *C, int argc, char **argv); void WM_exit (struct bContext *C); void WM_main (struct bContext *C); diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 6997bcaf309..a83b6c3609a 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -106,9 +106,9 @@ static void wm_free_reports(bContext *C) /* only called once, for startup */ -void WM_init(bContext *C) +void WM_init(bContext *C, int argc, char **argv) { - + if (!G.background) { wm_ghost_init(C); /* note: it assigns C to ghost! */ wm_init_cursor_data(); @@ -129,9 +129,18 @@ void WM_init(bContext *C) init_builtin_keyingsets(); /* editors/animation/keyframing.c */ + /* python needs initializing before loading the .B.blend + * because it may contain PyDrivers. It also needs to be after + * initializing space types and other internal data */ +#ifndef DISABLE_PYTHON + BPY_set_context(C); /* necessary evil */ + BPY_start_python(argc, argv); + BPY_load_user_modules(C); +#endif + /* get the default database, plus a wm */ WM_read_homefile(C, NULL); - + wm_init_reports(C); /* reports cant be initialized before the wm */ if (!G.background) { diff --git a/source/creator/creator.c b/source/creator/creator.c index cad79395b76..87662e0b7a5 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -493,13 +493,7 @@ int main(int argc, char **argv) } } - WM_init(C); - -#ifndef DISABLE_PYTHON - BPY_set_context(C); /* necessary evil */ - BPY_start_python(argc, argv); - BPY_load_user_modules(C); -#endif + WM_init(C, argc, argv); // XXX BRECHT SOLVE BLI_where_is_temp( btempdir, 1 ); /* call after loading the .B.blend so we can read U.tempdir */ @@ -539,13 +533,8 @@ int main(int argc, char **argv) } } - WM_init(C); + WM_init(C, argc, argv); -#ifndef DISABLE_PYTHON - BPY_set_context(C); /* necessary evil */ - BPY_start_python(argc, argv); - BPY_load_user_modules(C); -#endif BLI_where_is_temp( btempdir, 0 ); /* call after loading the .B.blend so we can read U.tempdir */ } #ifndef DISABLE_PYTHON |