diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2017-10-06 19:01:40 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2017-10-06 19:02:15 +0300 |
commit | b0ecd2eaaabf89dd749e9500a7a1ff4900065d45 (patch) | |
tree | c7c34e4b434136ac7c8e0685c8dec1668600cec3 | |
parent | 5ec270c20c83e0e0fd8a0d10be8235b905bf8fd8 (diff) |
Fix crash when deleting workspace active in multiple windows
-rw-r--r-- | source/blender/editors/include/ED_screen.h | 2 | ||||
-rw-r--r-- | source/blender/editors/screen/workspace_edit.c | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 524ee01c30f..7ebf0e921ac 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -140,7 +140,7 @@ struct WorkSpace *ED_workspace_duplicate( bool ED_workspace_delete( struct WorkSpace *workspace, struct Main *bmain, struct bContext *C, - struct wmWindowManager *wm, struct wmWindow *win) ATTR_NONNULL(); + struct wmWindowManager *wm) ATTR_NONNULL(); void ED_workspace_scene_data_sync( struct WorkSpaceInstanceHook *hook, Scene *scene) ATTR_NONNULL(); void ED_workspace_render_layer_unset( diff --git a/source/blender/editors/screen/workspace_edit.c b/source/blender/editors/screen/workspace_edit.c index 34def82f16e..00a965beae7 100644 --- a/source/blender/editors/screen/workspace_edit.c +++ b/source/blender/editors/screen/workspace_edit.c @@ -239,7 +239,7 @@ WorkSpace *ED_workspace_duplicate( * \return if succeeded. */ bool ED_workspace_delete( - WorkSpace *workspace, Main *bmain, bContext *C, wmWindowManager *wm, wmWindow *win) + WorkSpace *workspace, Main *bmain, bContext *C, wmWindowManager *wm) { ID *workspace_id = (ID *)workspace; @@ -247,7 +247,7 @@ bool ED_workspace_delete( return false; } - if (WM_window_get_active_workspace(win) == workspace) { + for (wmWindow *win = wm->windows.first; win; win = win->next) { WorkSpace *prev = workspace_id->prev; WorkSpace *next = workspace_id->next; @@ -315,7 +315,7 @@ static int workspace_delete_exec(bContext *C, wmOperator *UNUSED(op)) wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); - ED_workspace_delete(WM_window_get_active_workspace(win), bmain, C, wm, win); + ED_workspace_delete(WM_window_get_active_workspace(win), bmain, C, wm); return OPERATOR_FINISHED; } |