Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/BKE_modifier.h1
-rw-r--r--source/blender/blenkernel/intern/modifier.c12
-rw-r--r--source/blender/editors/interface/interface_templates.c2
3 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 65038c7f09c..3275adf79fa 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -321,6 +321,7 @@ void modifier_unique_name(struct ListBase *modifiers, struct ModifierDa
void modifier_copyData(struct ModifierData *md, struct ModifierData *target);
bool modifier_dependsOnTime(struct ModifierData *md);
bool modifier_supportsMapping(struct ModifierData *md);
+bool modifier_supportsCage(struct Scene *scene, struct ModifierData *md);
bool modifier_couldBeCage(struct Scene *scene, struct ModifierData *md);
bool modifier_isCorrectableDeformed(struct ModifierData *md);
bool modifier_isSameTopology(ModifierData *md);
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 4871b9bf3bf..9f82fa8c84f 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -263,6 +263,18 @@ void modifier_copyData(ModifierData *md, ModifierData *target)
mti->copyData(md, target);
}
+
+bool modifier_supportsCage(struct Scene *scene, ModifierData *md)
+{
+ ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+ md->scene = scene;
+
+ return ((!mti->isDisabled || !mti->isDisabled(md, 0)) &&
+ (mti->flags & eModifierTypeFlag_SupportsEditmode) &&
+ modifier_supportsMapping(md));
+}
+
bool modifier_couldBeCage(struct Scene *scene, ModifierData *md)
{
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 5b208a3b0c2..ad3dd536032 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -908,7 +908,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob,
uiButSetFlag(but, UI_BUT_DISABLED);
uiButSetFunc(but, modifiers_setOnCage, ob, md);
}
- else {
+ else if (modifier_supportsCage(scene, md)) {
uiBlockEndAlign(block);
/* place holder button */