From b45f410b3157cb13e7ff4d88dcf5557d2621b9c3 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Fri, 27 May 2022 16:48:09 +0200 Subject: Fix T97790: Crash in Outliner "Blender File" mode with old files IPO data-block types are deprecated since 2.5. Don't show them in the Outliner at all. Differential Revision: https://developer.blender.org/D15049 --- source/blender/editors/space_outliner/tree/tree_display_libraries.cc | 5 +++++ source/blender/makesdna/DNA_ID.h | 2 ++ source/blender/makesdna/DNA_ID_enums.h | 2 ++ 3 files changed, 9 insertions(+) (limited to 'source') diff --git a/source/blender/editors/space_outliner/tree/tree_display_libraries.cc b/source/blender/editors/space_outliner/tree/tree_display_libraries.cc index 476bbdb63ae..79eec632c90 100644 --- a/source/blender/editors/space_outliner/tree/tree_display_libraries.cc +++ b/source/blender/editors/space_outliner/tree/tree_display_libraries.cc @@ -116,6 +116,11 @@ TreeElement *TreeDisplayLibraries::add_library_contents(Main &mainvar, ListBase ID *id = static_cast(lbarray[a]->first); const bool is_library = (GS(id->name) == ID_LI) && (lib != nullptr); + /* Don't show deprecated types. */ + if (ID_TYPE_IS_DEPRECATED(GS(id->name))) { + continue; + } + /* check if there's data in current lib */ for (ID *id_iter : List(lbarray[a])) { if (id_iter->lib == lib) { diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h index 17d783d3ebf..1989118bef9 100644 --- a/source/blender/makesdna/DNA_ID.h +++ b/source/blender/makesdna/DNA_ID.h @@ -597,6 +597,8 @@ typedef struct PreviewImage { * Keep in sync with #BKE_id_eval_properties_copy. */ #define ID_TYPE_SUPPORTS_PARAMS_WITHOUT_COW(id_type) ELEM(id_type, ID_ME) +#define ID_TYPE_IS_DEPRECATED(id_type) ELEM(id_type, ID_IP) + #ifdef GS # undef GS #endif diff --git a/source/blender/makesdna/DNA_ID_enums.h b/source/blender/makesdna/DNA_ID_enums.h index b0ca13615b8..5999af8bf5c 100644 --- a/source/blender/makesdna/DNA_ID_enums.h +++ b/source/blender/makesdna/DNA_ID_enums.h @@ -38,6 +38,8 @@ enum eIconSizes { * * Written to #BHead.code (for file IO) * and the first 2 bytes of #ID.name (for runtime checks, see #GS macro). + * + * Update #ID_TYPE_IS_DEPRECATED() when deprecating types. */ typedef enum ID_Type { ID_SCE = MAKE_ID2('S', 'C'), /* Scene */ -- cgit v1.2.3