diff --git a/source/blender/blenkernel/intern/screen.cc b/source/blender/blenkernel/intern/screen.cc index dd26686df16..2ddf9befe70 100644 --- a/source/blender/blenkernel/intern/screen.cc +++ b/source/blender/blenkernel/intern/screen.cc @@ -170,7 +170,7 @@ IDTypeInfo IDType_ID_SCR = { /*name_plural*/ N_("screens"), /*translation_context*/ BLT_I18NCONTEXT_ID_SCREEN, /*flags*/ IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_ONLY_APPEND | IDTYPE_FLAGS_NO_ANIMDATA | - IDTYPE_FLAGS_NO_MEMFILE_UNDO | IDTYPE_FLAGS_NEVER_UNUSED, + IDTYPE_FLAGS_NO_MEMFILE_UNDO, /*asset_type_info*/ nullptr, /*init_data*/ nullptr, diff --git a/source/blender/editors/screen/workspace_edit.cc b/source/blender/editors/screen/workspace_edit.cc index 982ca24c417..ce2c4fed0ba 100644 --- a/source/blender/editors/screen/workspace_edit.cc +++ b/source/blender/editors/screen/workspace_edit.cc @@ -257,6 +257,12 @@ bool ED_workspace_delete(WorkSpace *workspace, Main *bmain, bContext *C, wmWindo } } + /* Also delete managed sceens if they have no other users. */ + LISTBASE_FOREACH (WorkSpaceLayout *, layout, &workspace->layouts) { + BKE_id_free_us(bmain, layout->screen); + layout->screen = nullptr; + } + BKE_id_free(bmain, &workspace->id); return true; }