Index: operation.c =================================================================== --- operation.c (revision 28794) +++ operation.c (revision 28795) @@ -46,6 +46,9 @@ exto = pcb_extobj_edit_pre(Ptr2); + if (F->common_pre != NULL) + F->common_pre(ctx, Ptr2, Ptr3); + switch (Type) { case PCB_OBJ_LINE: if (F->Line) @@ -98,6 +101,9 @@ break; } + if (F->common_post != NULL) + F->common_post(ctx, Ptr2, Ptr3); + if (exto != NULL) pcb_extobj_edit_geo(exto); @@ -132,7 +138,9 @@ PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, line); } exto = pcb_extobj_edit_pre((pcb_any_obj_t *)line); + if (F->common_pre != NULL) F->common_pre(ctx, line, NULL); F->Line(ctx, layer, line); + if (F->common_post != NULL) F->common_post(ctx, line, NULL); if (exto != NULL) pcb_extobj_edit_geo(exto); changed = pcb_true; } @@ -152,7 +160,9 @@ PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, arc); } exto = pcb_extobj_edit_pre((pcb_any_obj_t *)arc); + if (F->common_pre != NULL) F->common_pre(ctx, arc, NULL); F->Arc(ctx, layer, arc); + if (F->common_post != NULL) F->common_post(ctx, arc, NULL); if (exto != NULL) pcb_extobj_edit_geo(exto); changed = pcb_true; } @@ -172,7 +182,9 @@ PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, text); } exto = pcb_extobj_edit_pre((pcb_any_obj_t *)text); + if (F->common_pre != NULL) F->common_pre(ctx, text, NULL); F->Text(ctx, layer, text); + if (F->common_post != NULL) F->common_post(ctx, text, NULL); if (exto != NULL) pcb_extobj_edit_geo(exto); changed = pcb_true; } @@ -192,7 +204,9 @@ PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, polygon); } exto = pcb_extobj_edit_pre((pcb_any_obj_t *)polygon); + if (F->common_pre != NULL) F->common_pre(ctx, polygon, NULL); F->Polygon(ctx, layer, polygon); + if (F->common_post != NULL) F->common_post(ctx, polygon, NULL); if (exto != NULL) pcb_extobj_edit_geo(exto); changed = pcb_true; } @@ -210,7 +224,9 @@ PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, subc); } exto = pcb_extobj_edit_pre((pcb_any_obj_t *)subc); + if (F->common_pre != NULL) F->common_pre(ctx, subc, NULL); F->subc(ctx, subc); + if (F->common_post != NULL) F->common_post(ctx, subc, NULL); if (exto != NULL) pcb_extobj_edit_geo(exto); changed = pcb_true; } @@ -235,7 +251,9 @@ PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, padstack); } exto = pcb_extobj_edit_pre((pcb_any_obj_t *)padstack); + if (F->common_pre != NULL) F->common_pre(ctx, padstack, NULL); F->padstack(ctx, padstack); + if (F->common_post != NULL) F->common_post(ctx, padstack, NULL); if (exto != NULL) pcb_extobj_edit_geo(exto); changed = pcb_true; } @@ -254,7 +272,9 @@ pcb_undo_add_obj_to_flag(line); PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, line); } + if (F->common_pre != NULL) F->common_pre(ctx, line, NULL); F->Rat(ctx, line); + if (F->common_post != NULL) F->common_post(ctx, line, NULL); changed = pcb_true; } PCB_END_LOOP;