From 5596f79821caae3d4c1eb608ce77371904f74b80 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 28 Mar 2022 17:34:36 +0200 Subject: LibOverride: Massive edits to 'editable' IDs checks in editors code. Add new `BKE_id_is_editable` helper in `BKE_lib_id.h`, that supercedes previous check (simple `ID_IS_LINKED()` macro) for many editing cases. This allows to also take into account 'system override' (aka non-editable override) case. Ref: {T95707}. --- source/blender/editors/transform/transform_convert_object.c | 4 +++- source/blender/editors/transform/transform_convert_sculpt.c | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'source/blender/editors/transform') diff --git a/source/blender/editors/transform/transform_convert_object.c b/source/blender/editors/transform/transform_convert_object.c index 1d187d01588..d2585493679 100644 --- a/source/blender/editors/transform/transform_convert_object.c +++ b/source/blender/editors/transform/transform_convert_object.c @@ -13,6 +13,7 @@ #include "BKE_animsys.h" #include "BKE_context.h" #include "BKE_layer.h" +#include "BKE_lib_id.h" #include "BKE_main.h" #include "BKE_object.h" #include "BKE_pointcache.h" @@ -481,6 +482,7 @@ static void clear_trans_object_base_flags(TransInfo *t) void createTransObject(bContext *C, TransInfo *t) { + Main *bmain = CTX_data_main(C); TransData *td = NULL; TransDataExtension *tx; const bool is_prop_edit = (t->flag & T_PROP_EDIT) != 0; @@ -527,7 +529,7 @@ void createTransObject(bContext *C, TransInfo *t) } /* select linked objects, but skip them later */ - if (ID_IS_LINKED(ob)) { + if (!BKE_id_is_editable(bmain, &ob->id)) { td->flag |= TD_SKIP; } diff --git a/source/blender/editors/transform/transform_convert_sculpt.c b/source/blender/editors/transform/transform_convert_sculpt.c index 0c6214668ba..5bf6bfa8644 100644 --- a/source/blender/editors/transform/transform_convert_sculpt.c +++ b/source/blender/editors/transform/transform_convert_sculpt.c @@ -10,6 +10,7 @@ #include "BLI_math.h" #include "BKE_context.h" +#include "BKE_lib_id.h" #include "BKE_paint.h" #include "BKE_report.h" @@ -27,7 +28,7 @@ void createTransSculpt(bContext *C, TransInfo *t) TransData *td; Scene *scene = t->scene; - if (ID_IS_LINKED(scene)) { + if (!BKE_id_is_editable(CTX_data_main(C), &scene->id)) { BKE_report(t->reports, RPT_ERROR, "Linked data can't text-space transform"); return; } @@ -102,7 +103,7 @@ void recalcData_sculpt(TransInfo *t) void special_aftertrans_update__sculpt(bContext *C, TransInfo *t) { Scene *scene = t->scene; - if (ID_IS_LINKED(scene)) { + if (!BKE_id_is_editable(CTX_data_main(C), &scene->id)) { /* `ED_sculpt_init_transform` was not called in this case. */ return; } -- cgit v1.2.3