Index: trunk/src_plugins/propedit/propsel.c =================================================================== --- trunk/src_plugins/propedit/propsel.c (revision 31108) +++ trunk/src_plugins/propedit/propsel.c (revision 31109) @@ -350,6 +350,12 @@ /*******************/ +static int attr_key_has_side_effect(const char *key) +{ + if (strcmp(key, "tight_clearance") == 0) return 1; + return 0; +} + static void toggle_attr(pcb_propset_ctx_t *st, rnd_attribute_list_t *list, int undoable, pcb_any_obj_t *obj) { const char *key = st->name+2, *newval = NULL; @@ -375,8 +381,7 @@ return; do_set:; - if (strcmp(key, "tight_clearance") == 0) - side_effect = 1; + side_effect = attr_key_has_side_effect(key); if ((obj != NULL) && side_effect) pcb_obj_pre(obj); if (undoable) @@ -409,6 +414,7 @@ static void set_attr_obj(pcb_propset_ctx_t *st, pcb_any_obj_t *obj) { const char *key = st->name+2; + int side_effect, res; if (st->toggle) { toggle_attr(st, &obj->Attributes, 1, obj); @@ -415,7 +421,15 @@ return; } - if (pcb_uchg_attr(st->pcb, obj, key, st->s) != 0) + side_effect = attr_key_has_side_effect(key); +printf("Side effect: %d key=%s\n", side_effect, key); + if (side_effect) + pcb_obj_pre(obj); + res = pcb_uchg_attr(st->pcb, obj, key, st->s); + if (side_effect) + pcb_obj_post(obj); + + if (res != 0) return; st->set_cnt++;