diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-11-02 13:57:23 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-11-02 14:01:38 +0300 |
commit | 9bd97e62ade417f6b4025acbad46802c3e7e5683 (patch) | |
tree | d09878d49da2a76e139ecd6e424499e3891550c7 /source | |
parent | 0c3b215e7d5456878b155d13440864f49ad1f230 (diff) |
Fix T92464: Operators fail after opening blend files via an operator
Operators such as setting the object mode failed after calling
WM_OT_open_mainfile from Python.
Keep the window after loading a file outside the main event loop.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 67222cc07f9..ff9b56d7859 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -769,6 +769,18 @@ static void wm_file_read_post(bContext *C, const struct wmFileReadPost_Params *p WM_toolsystem_init(C); } } + + /* Keep last. */ + if (use_data) { + if (!G.background) { + /* Special case, when calling indirectly (from a Python script for example), + * the event loop wont run again to set the active window. + * Set the window here to allow scripts to continue running other operations, see: T92464. */ + if (wm->op_undo_depth > 0) { + CTX_wm_window_set(C, wm->windows.first); + } + } + } } /** \} */ |