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. :)
This commit is contained in:
Thomas Dinges 2013-12-13 20:57:36 +01:00
parent 1e045a2417
commit f372758257
Notes: blender-bot 2023-02-14 11:28:47 +01:00
Referenced by issue #37898, blenderplayer painfully slow in recent builds
Referenced by issue #37810, Cycles Viewport render too dark
3 changed files with 14 additions and 1 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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 */