Index: trunk/src/remove.c =================================================================== --- trunk/src/remove.c (revision 31641) +++ trunk/src/remove.c (revision 31642) @@ -90,7 +90,7 @@ * removes all selected and visible objects * returns rnd_true if any objects have been removed */ -rnd_bool pcb_remove_selected(rnd_bool locked_too) +rnd_bool pcb_remove_selected(pcb_op_mode_t mode) { pcb_opctx_t ctx; @@ -97,7 +97,7 @@ ctx.remove.pcb = PCB; ctx.remove.destroy_target = NULL; - if (pcb_selected_operation(PCB, PCB->Data, &pcb_RemoveFunctions, &ctx, rnd_false, PCB_OBJ_ANY & (~PCB_OBJ_SUBC_PART), locked_too ? PCB_OP_ON_LOCKED : 0)) { + if (pcb_selected_operation(PCB, PCB->Data, &pcb_RemoveFunctions, &ctx, rnd_false, PCB_OBJ_ANY & (~PCB_OBJ_SUBC_PART), mode)) { pcb_undo_inc_serial(); pcb_draw(); return rnd_true; Index: trunk/src/remove.h =================================================================== --- trunk/src/remove.h (revision 31641) +++ trunk/src/remove.h (revision 31642) @@ -32,6 +32,7 @@ #define PCB_REMOVE_H #include "config.h" +#include "operation.h" #define PCB_REMOVE_TYPES \ (PCB_OBJ_PSTK | PCB_OBJ_LINE_POINT | PCB_OBJ_LINE | PCB_OBJ_TEXT | PCB_OBJ_SUBC | \ @@ -38,7 +39,7 @@ PCB_OBJ_POLY_POINT | PCB_OBJ_POLY | PCB_OBJ_RAT | PCB_OBJ_ARC | PCB_OBJ_GFX \ | PCB_OBJ_ARC_POINT) -rnd_bool pcb_remove_selected(rnd_bool locked_too); +rnd_bool pcb_remove_selected(pcb_op_mode_t mode); /* Undoable delete (operation wrapper) */ void *pcb_remove_object(int Type, void *Ptr1, void *Ptr2, void *Ptr3); Index: trunk/src/remove_act.c =================================================================== --- trunk/src/remove_act.c (revision 31641) +++ trunk/src/remove_act.c (revision 31642) @@ -52,7 +52,7 @@ RND_ACT_CONVARG(1, FGW_KEYWORD, Delete, id = fgw_keyword(&argv[1])); if (id == -1) { /* no arg */ - if (pcb_remove_selected(rnd_false) == rnd_false) + if (pcb_remove_selected(0) == rnd_false) id = F_Object; } @@ -81,7 +81,7 @@ } break; case F_Selected: - pcb_remove_selected(rnd_false); + pcb_remove_selected(0); break; case F_AllRats: if (pcb_rats_destroy(rnd_false)) @@ -101,7 +101,7 @@ static const char pcb_acth_RemoveSelected[] = "Removes any selected objects."; static fgw_error_t pcb_act_RemoveSelected(fgw_arg_t *res, int argc, fgw_arg_t *argv) { - if (pcb_remove_selected(rnd_false)) + if (pcb_remove_selected(0)) pcb_board_set_changed_flag(rnd_true); RND_ACT_IRES(0); return 0; Index: trunk/src/select_act.c =================================================================== --- trunk/src/select_act.c (revision 31641) +++ trunk/src/select_act.c (revision 31642) @@ -165,7 +165,7 @@ y = rnd_grid_fit(y, RND_ACT_HIDLIB->grid, RND_ACT_HIDLIB->grid_oy); pcb_buffer_add_selected(PCB, PCB_PASTEBUFFER, x, y, rnd_true, rnd_false); pcb_undo_save_serial(); - pcb_remove_selected(rnd_false); + pcb_remove_selected(0); pcb_subc_convert_from_buffer(PCB_PASTEBUFFER); pcb_undo_restore_serial(); pcb_buffer_copy_to_layout(PCB, x, y, rnd_false); Index: trunk/src_plugins/tool_std/tool_arrow.c =================================================================== --- trunk/src_plugins/tool_std/tool_arrow.c (revision 31641) +++ trunk/src_plugins/tool_std/tool_arrow.c (revision 31642) @@ -77,7 +77,7 @@ pcb_buffer_clear(pcb, PCB_PASTEBUFFER); pcb_buffer_add_selected(pcb, PCB_PASTEBUFFER, hl->tool_x, hl->tool_y, rnd_true, rnd_true); pcb_undo_save_serial(); - pcb_remove_selected(rnd_false); + pcb_remove_selected(PCB_OP_NO_SUBC_PART); rnd_tool_save(hl); rnd_tool_is_saved = rnd_true; rnd_tool_select_by_name(hl, "buffer");