Fix crash when deleting workspace active in multiple windows
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user