[Bf-blender-cvs] [5a17cb4c08] surface-deform-modifier: Use poll callback to disable bind operator instead of Python
Luca Rood
noreply at git.blender.org
Tue Feb 14 21:13:46 CET 2017
Commit: 5a17cb4c0825d3eab3daaff3dc6c27eb986f35f6
Author: Luca Rood
Date: Tue Feb 14 16:33:24 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rB5a17cb4c0825d3eab3daaff3dc6c27eb986f35f6
Use poll callback to disable bind operator instead of Python
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/editors/object/object_modifier.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 68e1b3b210..daa5ff2d39 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -956,13 +956,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
layout.separator()
- col = layout.column()
- col.active = md.target is not None
-
if md.is_bound:
- col.operator("object.surfacedeform_bind", text="Unbind")
+ layout.operator("object.surfacedeform_bind", text="Unbind")
else:
- col.operator("object.surfacedeform_bind", text="Bind")
+ layout.operator("object.surfacedeform_bind", text="Bind")
def UV_PROJECT(self, layout, ob, md):
split = layout.split()
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 38222fafd8..56e94c28d2 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -2297,15 +2297,22 @@ void OBJECT_OT_laplaciandeform_bind(wmOperatorType *ot)
/************************ sdef bind operator *********************/
-static int surfacedeform_poll(bContext *C)
+static int surfacedeform_bind_poll(bContext *C)
{
- return edit_modifier_poll_generic(C, &RNA_SurfaceDeformModifier, 0);
+ if (edit_modifier_poll_generic(C, &RNA_SurfaceDeformModifier, 0)) {
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", &RNA_SurfaceDeformModifier);
+ SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)ptr.data;
+
+ return ((smd != NULL) && (smd->target != NULL));
+ }
+
+ return 0;
}
static int surfacedeform_bind_exec(bContext *C, wmOperator *op)
{
Object *ob = ED_object_active_context(C);
- SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *) edit_modifier_property_get(op, ob, eModifierType_SurfaceDeform);
+ SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)edit_modifier_property_get(op, ob, eModifierType_SurfaceDeform);
if (!smd)
return OPERATOR_CANCELLED;
@@ -2339,7 +2346,7 @@ void OBJECT_OT_surfacedeform_bind(wmOperatorType *ot)
ot->idname = "OBJECT_OT_surfacedeform_bind";
/* api callbacks */
- ot->poll = surfacedeform_poll;
+ ot->poll = surfacedeform_bind_poll;
ot->invoke = surfacedeform_bind_invoke;
ot->exec = surfacedeform_bind_exec;
More information about the Bf-blender-cvs
mailing list