Index: trunk/src/libcschem/concrete.h =================================================================== --- trunk/src/libcschem/concrete.h (revision 11144) +++ trunk/src/libcschem/concrete.h (revision 11145) @@ -194,6 +194,7 @@ char *file_name; /* hint: trace file name from which the group was loaded, if available */ csch_rtree_box_t bbox_flt; /* bounding box with floaters included (e.g. for sheet size) */ const csch_extobj_impl_t *extobj; /* handler; not NULL if extobj attrib is set, but if implementation no found, all fields are NULL */ + long extobj_inhibit; /* if >0 do not call extobj hooks */ }; typedef enum csch_sheet_type_e { Index: trunk/src/libcschem/extobj.h =================================================================== --- trunk/src/libcschem/extobj.h (revision 11144) +++ trunk/src/libcschem/extobj.h (revision 11145) @@ -56,19 +56,19 @@ /*** implementation ***/ RND_INLINE void csch_extobj_update(csch_cgrp_t *grp) { - if ((grp->extobj != NULL) && (grp->extobj->update != NULL)) + if ((grp->extobj_inhibit == 0) && (grp->extobj != NULL) && (grp->extobj->update != NULL)) grp->extobj->update(grp); } RND_INLINE void csch_extrobj_attr_edit_pre(csch_cgrp_t *grp, const char *key) { - if ((grp->extobj != NULL) && (grp->extobj->attr_edit_pre != NULL)) + if ((grp->extobj_inhibit == 0) && (grp->extobj != NULL) && (grp->extobj->attr_edit_pre != NULL)) grp->extobj->attr_edit_pre(grp, key); } RND_INLINE void csch_extrobj_attr_edit_post(csch_cgrp_t *grp, const char *key) { - if ((grp->extobj != NULL) && (grp->extobj->attr_edit_post != NULL)) + if ((grp->extobj_inhibit == 0) && (grp->extobj != NULL) && (grp->extobj->attr_edit_post != NULL)) grp->extobj->attr_edit_post(grp, key); }