Index: obj_subc_parent.h =================================================================== --- obj_subc_parent.h (revision 14698) +++ obj_subc_parent.h (revision 14699) @@ -99,5 +99,22 @@ return 0; } +PCB_INLINE pcb_bool_t pcb_obj_is_under(pcb_any_obj_t *obj, pcb_data_t *data) +{ + for(;;) { + switch(obj->parent_type) { + case PCB_PARENT_ELEMENT: return pcb_false; /* remove this */ + case PCB_PARENT_INVALID: return pcb_false; + case PCB_PARENT_BOARD: return pcb_false; + case PCB_PARENT_LAYER: if (obj->parent.layer->parent == data) return pcb_true; break; + case PCB_PARENT_SUBC: if (obj->parent.subc->data == data) return pcb_true; break; + case PCB_PARENT_DATA: if (obj->parent.data == data) return pcb_true; break; + } + obj = (pcb_any_obj_t *)pcb_obj_parent_subc(obj); + if (obj == NULL) + return pcb_false; + } +} + #endif