From 5cdf279ef46fa8672d086d1f57025e31f477accc Mon Sep 17 00:00:00 2001 From: Falk David Date: Wed, 6 Jan 2021 17:53:37 +0100 Subject: Fix T84420: Linking regular materials to gpencil When using "Make Links"->"Materials" regular materials could be linked onto grease pencil objects. This caused a number of issues. The fix changes the `allow_make_links_data` function to make sure that if one object is of type `OB_GPENCIL`, the other has to be aswell. Reviewed By: antoniov Maniphest Tasks: T84420 Differential Revision: https://developer.blender.org/D10014 --- source/blender/editors/object/object_relations.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/object/object_relations.c') diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index ee9ef192d18..acad1b43cbb 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1567,7 +1567,11 @@ static bool allow_make_links_data(const int type, Object *ob_src, Object *ob_dst } break; case MAKE_LINKS_MATERIALS: - if (OB_TYPE_SUPPORT_MATERIAL(ob_src->type) && OB_TYPE_SUPPORT_MATERIAL(ob_dst->type)) { + if (OB_TYPE_SUPPORT_MATERIAL(ob_src->type) && OB_TYPE_SUPPORT_MATERIAL(ob_dst->type) && + /* Linking non-grease-pencil materials to a grease-pencil object causes issues. + * We make sure that if one of the objects is a grease-pencil object, the other must be + * as well. */ + ((ob_src->type == OB_GPENCIL) == (ob_dst->type == OB_GPENCIL))) { return true; } break; -- cgit v1.2.3