[Bf-blender-cvs] [f372758] master: Interface / Modifiers: Don't show cage placeholder in modifier header, if the current modifier does not support it or the cage is disabled (like Subsurf 0).

Thomas Dinges noreply at git.blender.org
Fri Dec 13 20:58:10 CET 2013


Commit: f372758257e268d4c1278aceeb243c1aa83ad695
Author: Thomas Dinges
Date:   Fri Dec 13 20:57:36 2013 +0100
http://developer.blender.org/rBf372758257e268d4c1278aceeb243c1aa83ad695

Interface / Modifiers: Don't show cage placeholder in modifier header, if the current modifier does not support it or the cage is disabled (like Subsurf 0).

This way we save some space but still avoid the jumping around while changing settings in the header itself.

Thanks to Brecht for help on this. :)

===================================================================

M	source/blender/blenkernel/BKE_modifier.h
M	source/blender/blenkernel/intern/modifier.c
M	source/blender/editors/interface/interface_templates.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 65038c7..3275adf 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 4871b9b..9f82fa8 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 5b208a3..ad3dd53 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 */




More information about the Bf-blender-cvs mailing list