diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-05-31 13:57:24 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-05-31 13:57:24 +0300 |
commit | 9b4e56c091f0df255cc09607061d130847a5f438 (patch) | |
tree | 061dec5b7a2df3d560dcdb9bf70e5878e8fb6279 /source | |
parent | d41bf6b8e8e9b00262cfb5547fda376e620eb864 (diff) | |
parent | 28369f725c10f167e504f0acd695a0f9d3c2a709 (diff) |
Merge branch 'master' into blender2.8
Conflicts:
source/blender/blenkernel/BKE_camera.h
source/blender/blenkernel/BKE_dynamicpaint.h
source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/intern/camera.c
source/blender/blenkernel/intern/dynamicpaint.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/smoke.c
source/blender/editors/object/object_transform.c
source/blender/editors/physics/dynamicpaint_ops.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/space_view3d/view3d_view.c
source/blender/modifiers/intern/MOD_dynamicpaint.c
source/blenderplayer/bad_level_call_stubs/stubs.c
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_object.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/smoke.c | 1 | ||||
-rw-r--r-- | source/blender/editors/include/ED_object.h | 6 | ||||
-rw-r--r-- | source/blender/editors/object/object_constraint.c | 51 | ||||
-rw-r--r-- | source/blender/editors/space_outliner/outliner_tools.c | 7 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_constraint.c | 4 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_object.c | 16 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_pose.c | 9 |
10 files changed, 56 insertions, 46 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index f5c36550193..3929a97ab65 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -78,7 +78,7 @@ void BKE_object_free_modifiers(struct Object *ob, const int flag); void BKE_object_make_proxy(struct Object *ob, struct Object *target, struct Object *gob); void BKE_object_copy_proxy_drivers(struct Object *ob, struct Object *target); -bool BKE_object_exists_check(const struct Object *obtest); +bool BKE_object_exists_check(struct Main *bmain, const struct Object *obtest); bool BKE_object_is_in_editmode(const struct Object *ob); bool BKE_object_is_in_editmode_vgroup(const struct Object *ob); bool BKE_object_is_in_wpaint_select_vert(const struct Object *ob); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 986812faebf..d2d68ce02ce 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -618,13 +618,13 @@ bool BKE_object_is_visible(Object *ob, const eObjectVisibilityCheck mode) } } -bool BKE_object_exists_check(const Object *obtest) +bool BKE_object_exists_check(Main *bmain, const Object *obtest) { Object *ob; if (obtest == NULL) return false; - ob = G.main->object.first; + ob = bmain->object.first; while (ob) { if (ob == obtest) return true; ob = ob->id.next; diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index 272af8341de..922f82a5e2e 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -73,6 +73,7 @@ #include "BKE_deform.h" #include "BKE_DerivedMesh.h" #include "BKE_effect.h" +#include "BKE_global.h" #include "BKE_main.h" #include "BKE_modifier.h" #include "BKE_object.h" diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 38cf754dda2..b3a2f6f7ca6 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -197,13 +197,13 @@ struct ListBase *get_active_constraints(struct Object *ob); struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **r_pchan); struct bConstraint *get_active_constraint(struct Object *ob); -void object_test_constraints(struct Object *ob); +void object_test_constraints(struct Main *bmain, struct Object *ob); void ED_object_constraint_set_active(struct Object *ob, struct bConstraint *con); -void ED_object_constraint_update(struct Object *ob); +void ED_object_constraint_update(struct Main *bmain, struct Object *ob); void ED_object_constraint_dependency_update(struct Main *bmain, struct Object *ob); -void ED_object_constraint_tag_update(struct Object *ob, struct bConstraint *con); +void ED_object_constraint_tag_update(struct Main *bmain, struct Object *ob, struct bConstraint *con); void ED_object_constraint_dependency_tag_update(struct Main *bmain, struct Object *ob, struct bConstraint *con); /* object_modes.c */ diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 28ff1ffab1c..6c4a79ec4b4 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -262,7 +262,7 @@ static void set_constraint_nth_target(bConstraint *con, Object *target, const ch /* ------------- Constraint Sanity Testing ------------------- */ -static void test_constraint(Object *owner, bPoseChannel *pchan, bConstraint *con, int type) +static void test_constraint(Main *bmain, Object *owner, bPoseChannel *pchan, bConstraint *con, int type) { const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con); ListBase targets = {NULL, NULL}; @@ -280,7 +280,7 @@ static void test_constraint(Object *owner, bPoseChannel *pchan, bConstraint *con * the constraint is deemed invalid */ /* default IK check ... */ - if (BKE_object_exists_check(data->tar) == 0) { + if (BKE_object_exists_check(bmain, data->tar) == 0) { data->tar = NULL; con->flag |= CONSTRAINT_DISABLE; } @@ -291,7 +291,7 @@ static void test_constraint(Object *owner, bPoseChannel *pchan, bConstraint *con } if (data->poletar) { - if (BKE_object_exists_check(data->poletar) == 0) { + if (BKE_object_exists_check(bmain, data->poletar) == 0) { data->poletar = NULL; con->flag |= CONSTRAINT_DISABLE; } @@ -310,7 +310,7 @@ static void test_constraint(Object *owner, bPoseChannel *pchan, bConstraint *con bPivotConstraint *data = con->data; /* target doesn't have to exist, but if it is non-null, it must exist! */ - if (data->tar && BKE_object_exists_check(data->tar) == 0) { + if (data->tar && BKE_object_exists_check(bmain, data->tar) == 0) { data->tar = NULL; con->flag |= CONSTRAINT_DISABLE; } @@ -433,7 +433,7 @@ static void test_constraint(Object *owner, bPoseChannel *pchan, bConstraint *con /* disable and clear constraints targets that are incorrect */ for (ct = targets.first; ct; ct = ct->next) { /* general validity checks (for those constraints that need this) */ - if (BKE_object_exists_check(ct->tar) == 0) { + if (BKE_object_exists_check(bmain, ct->tar) == 0) { /* object doesn't exist, but constraint requires target */ ct->tar = NULL; con->flag |= CONSTRAINT_DISABLE; @@ -503,7 +503,7 @@ static int constraint_type_get(Object *owner, bPoseChannel *pchan) /* checks validity of object pointers, and NULLs, * if Bone doesnt exist it sets the CONSTRAINT_DISABLE flag. */ -static void test_constraints(Object *owner, bPoseChannel *pchan) +static void test_constraints(Main *bmain, Object *owner, bPoseChannel *pchan) { bConstraint *curcon; ListBase *conlist = NULL; @@ -526,44 +526,44 @@ static void test_constraints(Object *owner, bPoseChannel *pchan) /* Check all constraints - is constraint valid? */ if (conlist) { for (curcon = conlist->first; curcon; curcon = curcon->next) { - test_constraint(owner, pchan, curcon, type); + test_constraint(bmain, owner, pchan, curcon, type); } } } -void object_test_constraints(Object *owner) +void object_test_constraints(Main *bmain, Object *owner) { if (owner->constraints.first) - test_constraints(owner, NULL); + test_constraints(bmain, owner, NULL); if (owner->type == OB_ARMATURE && owner->pose) { bPoseChannel *pchan; for (pchan = owner->pose->chanbase.first; pchan; pchan = pchan->next) { if (pchan->constraints.first) - test_constraints(owner, pchan); + test_constraints(bmain, owner, pchan); } } } -static void object_test_constraint(Object *owner, bConstraint *con) +static void object_test_constraint(Main *bmain, Object *owner, bConstraint *con) { if (owner->type == OB_ARMATURE && owner->pose) { if (BLI_findindex(&owner->constraints, con) != -1) { - test_constraint(owner, NULL, con, CONSTRAINT_OBTYPE_OBJECT); + test_constraint(bmain, owner, NULL, con, CONSTRAINT_OBTYPE_OBJECT); } else { bPoseChannel *pchan; for (pchan = owner->pose->chanbase.first; pchan; pchan = pchan->next) { if (BLI_findindex(&pchan->constraints, con) != -1) { - test_constraint(owner, pchan, con, CONSTRAINT_OBTYPE_BONE); + test_constraint(bmain, owner, pchan, con, CONSTRAINT_OBTYPE_BONE); break; } } } } else { - test_constraint(owner, NULL, con, CONSTRAINT_OBTYPE_OBJECT); + test_constraint(bmain, owner, NULL, con, CONSTRAINT_OBTYPE_OBJECT); } } @@ -689,6 +689,7 @@ static bConstraint *edit_constraint_property_get(wmOperator *op, Object *ob, int static int stretchto_reset_exec(bContext *C, wmOperator *op) { + Main *bmain = CTX_data_main(C); Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, CONSTRAINT_TYPE_STRETCHTO); bStretchToConstraint *data = (con) ? (bStretchToConstraint *)con->data : NULL; @@ -699,7 +700,7 @@ static int stretchto_reset_exec(bContext *C, wmOperator *op) /* just set original length to 0.0, which will cause a reset on next recalc */ data->orglength = 0.0f; - ED_object_constraint_update(ob); + ED_object_constraint_update(bmain, ob); WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; @@ -735,6 +736,7 @@ void CONSTRAINT_OT_stretchto_reset(wmOperatorType *ot) static int limitdistance_reset_exec(bContext *C, wmOperator *op) { + Main *bmain = CTX_data_main(C); Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, CONSTRAINT_TYPE_DISTLIMIT); bDistLimitConstraint *data = (con) ? (bDistLimitConstraint *)con->data : NULL; @@ -745,7 +747,7 @@ static int limitdistance_reset_exec(bContext *C, wmOperator *op) /* just set original length to 0.0, which will cause a reset on next recalc */ data->dist = 0.0f; - ED_object_constraint_update(ob); + ED_object_constraint_update(bmain, ob); WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; @@ -1198,11 +1200,11 @@ void ED_object_constraint_set_active(Object *ob, bConstraint *con) BKE_constraints_active_set(lb, con); } -void ED_object_constraint_update(Object *ob) +void ED_object_constraint_update(Main *bmain, Object *ob) { if (ob->pose) BKE_pose_update_constraint_flags(ob->pose); - object_test_constraints(ob); + object_test_constraints(bmain, ob); if (ob->type == OB_ARMATURE) DEG_id_tag_update(&ob->id, OB_RECALC_DATA | OB_RECALC_OB); @@ -1225,7 +1227,7 @@ static void object_pose_tag_update(Main *bmain, Object *ob) void ED_object_constraint_dependency_update(Main *bmain, Object *ob) { - ED_object_constraint_update(ob); + ED_object_constraint_update(bmain, ob); if (ob->pose) { object_pose_tag_update(bmain, ob); @@ -1233,13 +1235,13 @@ void ED_object_constraint_dependency_update(Main *bmain, Object *ob) DEG_relations_tag_update(bmain); } -void ED_object_constraint_tag_update(Object *ob, bConstraint *con) +void ED_object_constraint_tag_update(Main *bmain, Object *ob, bConstraint *con) { if (ob->pose) { BKE_pose_tag_update_constraint_flags(ob->pose); } - object_test_constraint(ob, con); + object_test_constraint(bmain, ob, con); if (ob->type == OB_ARMATURE) DEG_id_tag_update(&ob->id, OB_RECALC_DATA | OB_RECALC_OB); @@ -1254,7 +1256,7 @@ void ED_object_constraint_tag_update(Object *ob, bConstraint *con) void ED_object_constraint_dependency_tag_update(Main *bmain, Object *ob, bConstraint *con) { - ED_object_constraint_tag_update(ob, con); + ED_object_constraint_tag_update(bmain, ob, con); if (ob->pose) { object_pose_tag_update(bmain, ob); @@ -1271,6 +1273,7 @@ static int constraint_poll(bContext *C) static int constraint_delete_exec(bContext *C, wmOperator *UNUSED(op)) { + Main *bmain = CTX_data_main(C); PointerRNA ptr = CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); Object *ob = ptr.id.data; bConstraint *con = ptr.data; @@ -1280,7 +1283,7 @@ static int constraint_delete_exec(bContext *C, wmOperator *UNUSED(op)) if (BKE_constraint_remove_ex(lb, ob, con, true)) { /* there's no active constraint now, so make sure this is the case */ BKE_constraints_active_set(&ob->constraints, NULL); - ED_object_constraint_update(ob); /* needed to set the flags on posebones correctly */ + ED_object_constraint_update(bmain, ob); /* needed to set the flags on posebones correctly */ /* relatiols */ DEG_relations_tag_update(CTX_data_main(C)); @@ -1816,7 +1819,7 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase } /* make sure all settings are valid - similar to above checks, but sometimes can be wrong */ - object_test_constraints(ob); + object_test_constraints(bmain, ob); if (pchan) BKE_pose_update_constraint_flags(ob->pose); diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c index 5ae6cec84ba..f351f4ff2b2 100644 --- a/source/blender/editors/space_outliner/outliner_tools.c +++ b/source/blender/editors/space_outliner/outliner_tools.c @@ -750,18 +750,19 @@ static void data_select_linked_cb(int event, TreeElement *te, TreeStoreElem *UNU static void constraint_cb(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem), void *C_v) { bContext *C = C_v; + Main *bmain = CTX_data_main(C); SpaceOops *soops = CTX_wm_space_outliner(C); bConstraint *constraint = (bConstraint *)te->directdata; Object *ob = (Object *)outliner_search_back(soops, te, ID_OB); if (event == OL_CONSTRAINTOP_ENABLE) { constraint->flag &= ~CONSTRAINT_OFF; - ED_object_constraint_update(ob); + ED_object_constraint_update(bmain, ob); WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); } else if (event == OL_CONSTRAINTOP_DISABLE) { constraint->flag = CONSTRAINT_OFF; - ED_object_constraint_update(ob); + ED_object_constraint_update(bmain, ob); WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); } else if (event == OL_CONSTRAINTOP_DELETE) { @@ -777,7 +778,7 @@ static void constraint_cb(int event, TreeElement *te, TreeStoreElem *UNUSED(tsel if (BKE_constraint_remove_ex(lb, ob, constraint, true)) { /* there's no active constraint now, so make sure this is the case */ BKE_constraints_active_set(&ob->constraints, NULL); - ED_object_constraint_update(ob); /* needed to set the flags on posebones correctly */ + ED_object_constraint_update(bmain, ob); /* needed to set the flags on posebones correctly */ WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT | NA_REMOVED, ob); te->store_elem->flag &= ~TSE_SELECTED; } diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 2ac2bf683e0..f37f446ad3e 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -54,6 +54,7 @@ #include "BKE_font.h" #include "BKE_layer.h" #include "BKE_library.h" +#include "BKE_main.h" #include "BKE_object.h" #include "BKE_paint.h" #include "BKE_report.h" @@ -2803,6 +2804,7 @@ void VIEW3D_OT_view_all(wmOperatorType *ot) /* like a localview without local!, was centerview() in 2.4x */ static int viewselected_exec(bContext *C, wmOperator *op) { + Main *bmain = CTX_data_main(C); ARegion *ar = CTX_wm_region(C); View3D *v3d = CTX_wm_view3d(C); Scene *scene = CTX_data_scene(C); diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index f964550e30d..7c53a3b54c0 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -275,9 +275,9 @@ static char *rna_Constraint_path(PointerRNA *ptr) } } -static void rna_Constraint_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) +static void rna_Constraint_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr) { - ED_object_constraint_tag_update(ptr->id.data, ptr->data); + ED_object_constraint_tag_update(bmain, ptr->id.data, ptr->data); } static void rna_Constraint_dependency_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 16aceca026c..114f8e42006 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1095,17 +1095,17 @@ static void rna_Object_active_constraint_set(PointerRNA *ptr, PointerRNA value) BKE_constraints_active_set(&ob->constraints, (bConstraint *)value.data); } -static bConstraint *rna_Object_constraints_new(Object *object, int type) +static bConstraint *rna_Object_constraints_new(Object *object, Main *bmain, int type) { bConstraint *new_con = BKE_constraint_add_for_object(object, NULL, type); - ED_object_constraint_tag_update(object, new_con); + ED_object_constraint_tag_update(bmain, object, new_con); WM_main_add_notifier(NC_OBJECT | ND_CONSTRAINT | NA_ADDED, object); return new_con; } -static void rna_Object_constraints_remove(Object *object, ReportList *reports, PointerRNA *con_ptr) +static void rna_Object_constraints_remove(Object *object, Main *bmain, ReportList *reports, PointerRNA *con_ptr) { bConstraint *con = con_ptr->data; if (BLI_findindex(&object->constraints, con) == -1) { @@ -1116,16 +1116,16 @@ static void rna_Object_constraints_remove(Object *object, ReportList *reports, P BKE_constraint_remove(&object->constraints, con); RNA_POINTER_INVALIDATE(con_ptr); - ED_object_constraint_update(object); + ED_object_constraint_update(bmain, object); ED_object_constraint_set_active(object, NULL); WM_main_add_notifier(NC_OBJECT | ND_CONSTRAINT | NA_REMOVED, object); } -static void rna_Object_constraints_clear(Object *object) +static void rna_Object_constraints_clear(Object *object, Main *bmain) { BKE_constraints_free(&object->constraints); - ED_object_constraint_update(object); + ED_object_constraint_update(bmain, object); ED_object_constraint_set_active(object, NULL); WM_main_add_notifier(NC_OBJECT | ND_CONSTRAINT | NA_REMOVED, object); @@ -1614,6 +1614,7 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) /* Constraint collection */ func = RNA_def_function(srna, "new", "rna_Object_constraints_new"); RNA_def_function_ui_description(func, "Add a new constraint to this object"); + RNA_def_function_flag(func, FUNC_USE_MAIN); /* object to add */ parm = RNA_def_enum(func, "type", rna_enum_constraint_type_items, 1, "", "Constraint type to add"); RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); @@ -1623,13 +1624,14 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) func = RNA_def_function(srna, "remove", "rna_Object_constraints_remove"); RNA_def_function_ui_description(func, "Remove a constraint from this object"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_flag(func, FUNC_USE_MAIN | FUNC_USE_REPORTS); /* constraint to remove */ parm = RNA_def_pointer(func, "constraint", "Constraint", "", "Removed constraint"); RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); func = RNA_def_function(srna, "clear", "rna_Object_constraints_clear"); + RNA_def_function_flag(func, FUNC_USE_MAIN); RNA_def_function_ui_description(func, "Remove all constraint from this object"); } diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 014ac426b54..c25601a25fe 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -242,7 +242,7 @@ static void rna_Pose_ik_solver_update(Main *bmain, Scene *UNUSED(scene), Pointer BKE_pose_update_constraint_flags(pose); - object_test_constraints(ob); + object_test_constraints(bmain, ob); DEG_id_tag_update(&ob->id, OB_RECALC_DATA | OB_RECALC_OB); } @@ -540,7 +540,8 @@ static bConstraint *rna_PoseChannel_constraints_new(ID *id, bPoseChannel *pchan, return new_con; } -static void rna_PoseChannel_constraints_remove(ID *id, bPoseChannel *pchan, ReportList *reports, PointerRNA *con_ptr) +static void rna_PoseChannel_constraints_remove( + ID *id, bPoseChannel *pchan, Main *bmain, ReportList *reports, PointerRNA *con_ptr) { bConstraint *con = con_ptr->data; const bool is_ik = ELEM(con->type, CONSTRAINT_TYPE_KINEMATIC, CONSTRAINT_TYPE_SPLINEIK); @@ -554,7 +555,7 @@ static void rna_PoseChannel_constraints_remove(ID *id, bPoseChannel *pchan, Repo BKE_constraint_remove(&pchan->constraints, con); RNA_POINTER_INVALIDATE(con_ptr); - ED_object_constraint_update(ob); + ED_object_constraint_update(bmain, ob); BKE_constraints_active_set(&pchan->constraints, NULL); /* XXX, is this really needed? - Campbell */ @@ -830,7 +831,7 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro func = RNA_def_function(srna, "remove", "rna_PoseChannel_constraints_remove"); RNA_def_function_ui_description(func, "Remove a constraint from this object"); - RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID); /* ID needed for refresh */ + RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN | FUNC_USE_REPORTS ); /* ID needed for refresh */ /* constraint to remove */ parm = RNA_def_pointer(func, "constraint", "Constraint", "", "Removed constraint"); RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); |