Commit: b0ecd2eaaabf89dd749e9500a7a1ff4900065d45
Author: Julian Eisel
Date:   Fri Oct 6 18:01:40 2017 +0200
Branches: blender2.8
https://developer.blender.org/rBb0ecd2eaaabf89dd749e9500a7a1ff4900065d45

Fix crash when deleting workspace active in multiple windows

===================================================================

M       source/blender/editors/include/ED_screen.h
M       source/blender/editors/screen/workspace_edit.c

===================================================================

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;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to