Index: trunk/src_plugins/propedit/propsel.c =================================================================== --- trunk/src_plugins/propedit/propsel.c (revision 28777) +++ trunk/src_plugins/propedit/propsel.c (revision 28778) @@ -334,7 +334,7 @@ /*******************/ -static void set_attr(pcb_propset_ctx_t *st, pcb_attribute_list_t *list) +static void set_attr_raw(pcb_propset_ctx_t *st, pcb_attribute_list_t *list) { const char *key = st->name+2; const char *orig = pcb_attribute_get(list, key); @@ -346,6 +346,16 @@ st->set_cnt++; } +static void set_attr_obj(pcb_propset_ctx_t *st, pcb_any_obj_t *obj) +{ + const char *key = st->name+2; + + if (pcb_uchg_attr(st->pcb, obj, key, st->s) != 0) + return; + + st->set_cnt++; +} + #define DONE { st->set_cnt++; pcb_undo_restore_serial(); return; } #define DONE0 { st->set_cnt++; pcb_undo_restore_serial(); return 0; } #define DONE1 { st->set_cnt++; pcb_undo_restore_serial(); return 1; } @@ -377,7 +387,7 @@ const char *pn = st->name + 8; if (st->is_attr) { - set_attr(st, &pcb->Attributes); + set_attr_raw(st, &pcb->Attributes); return; } @@ -412,7 +422,7 @@ const char *pn = st->name + 8; if (st->is_attr) { - set_attr(st, &layer->Attributes); + set_attr_obj(st, (pcb_any_obj_t *)layer); return 0; } @@ -433,7 +443,7 @@ const char *pn = st->name + 14; if (st->is_attr) { - set_attr(st, &grp->Attributes); + set_attr_obj(st, (pcb_any_obj_t *)grp); return; } @@ -470,7 +480,7 @@ const char *pn = st->name + 8; if (st->is_attr) { - set_attr(st, &line->Attributes); + set_attr_obj(st, (pcb_any_obj_t *)line); return; } @@ -521,7 +531,7 @@ const char *pn = st->name + 8; if (st->is_attr) { - set_attr(st, &arc->Attributes); + set_attr_obj(st, (pcb_any_obj_t *)arc); return; } @@ -576,7 +586,7 @@ char *old; if (st->is_attr) { - set_attr(st, &text->Attributes); + set_attr_obj(st, (pcb_any_obj_t *)text); return; } @@ -634,7 +644,7 @@ } if (st->is_attr) { - set_attr(st, &poly->Attributes); + set_attr_obj(st, (pcb_any_obj_t *)poly); return; } } @@ -647,7 +657,7 @@ pcb_pstk_proto_t *proto; if (st->is_attr) { - set_attr(st, &ps->Attributes); + set_attr_obj(st, (pcb_any_obj_t *)ps); return; } @@ -736,7 +746,7 @@ if (set_common(st, (pcb_any_obj_t *)ssubc)) return; if (st->is_attr) { - set_attr(st, &ssubc->Attributes); + set_attr_obj(st, (pcb_any_obj_t *)ssubc); return; }