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:
authorCampbell Barton <ideasman42@gmail.com>2011-12-16 14:39:43 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-12-16 14:39:43 +0400
commitce8f64d9f92e81629facea34b7f9e18e1f6b3d0c (patch)
treecdf7e806132bca62e915621fbc8e2632de7bdff6 /source/blender/editors
parent68dd3980638b6a1f0c766a1e023b393c0f36cacd (diff)
de-duplicate parent loop checking function
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/object/object_relations.c16
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c11
2 files changed, 5 insertions, 22 deletions
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 6b517b6eeb0..1ba0157e8d3 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -512,19 +512,9 @@ static EnumPropertyItem prop_make_parent_types[] = {
{0, NULL, 0, NULL, NULL}
};
-static int test_parent_loop(Object *par, Object *ob)
-{
- /* test if 'ob' is a parent somewhere in par's parents */
-
- if(par == NULL) return 0;
- if(ob == par) return 1;
-
- return test_parent_loop(par->parent, ob);
-}
-
void ED_object_parent(Object *ob, Object *par, int type, const char *substr)
{
- if(!par || test_parent_loop(par, ob)) {
+ if (!par || BKE_object_parent_loop_check(par, ob)) {
ob->parent= NULL;
ob->partype= PAROBJECT;
ob->parsubstr[0]= 0;
@@ -593,7 +583,7 @@ static int parent_set_exec(bContext *C, wmOperator *op)
if(ob!=par) {
- if( test_parent_loop(par, ob) ) {
+ if (BKE_object_parent_loop_check(par, ob)) {
BKE_report(op->reports, RPT_ERROR, "Loop in parents");
}
else {
@@ -766,7 +756,7 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op)
/* context iterator */
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
if (ob != par) {
- if (test_parent_loop(par, ob)) {
+ if (BKE_object_parent_loop_check(par, ob)) {
BKE_report(op->reports, RPT_ERROR, "Loop in parents");
}
else {
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index d2689fad8c2..1b923c7a0cd 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -59,6 +59,7 @@
#include "BKE_mesh.h"
#include "BKE_screen.h"
#include "BKE_deform.h"
+#include "BKE_object.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -1105,14 +1106,6 @@ static void v3d_editmetaball_buts(uiLayout *layout, Object *ob)
}
}
-/* test if 'ob' is a parent somewhere in par's parents */
-static int test_parent_loop(Object *par, Object *ob)
-{
- if(par == NULL) return 0;
- if(ob == par) return 1;
- return test_parent_loop(par->parent, ob);
-}
-
static void do_view3d_region_buttons(bContext *C, void *UNUSED(index), int event)
{
Main *bmain= CTX_data_main(C);
@@ -1144,7 +1137,7 @@ static void do_view3d_region_buttons(bContext *C, void *UNUSED(index), int event
/* note; this case also used for parbone */
case B_OBJECTPANELPARENT:
if(ob) {
- if(ob->id.lib || test_parent_loop(ob->parent, ob) )
+ if (ob->id.lib || BKE_object_parent_loop_check(ob->parent, ob))
ob->parent= NULL;
else {
DAG_scene_sort(bmain, scene);