Index: trunk/src/board.c =================================================================== --- trunk/src/board.c (revision 32238) +++ trunk/src/board.c (revision 32239) @@ -34,6 +34,7 @@ #include #include #include +#include #include #include "undo.h" #include "draw.h" @@ -115,7 +116,9 @@ dpcb = -1; pcb_io_err_inhibit_inc(); + rnd_hid_menu_merge_inhibit_inc(); rnd_conf_list_foreach_path_first(NULL, dpcb, &conf_core.rc.default_pcb_file, pcb_load_pcb(__path__, NULL, rnd_false, 1 | 0x10 | inh)); + rnd_hid_menu_merge_inhibit_dec(); pcb_io_err_inhibit_dec(); if (dpcb != 0) { /* no default PCB in file, use embedded version */ Index: trunk/src/plug_io.c =================================================================== --- trunk/src/plug_io.c (revision 32238) +++ trunk/src/plug_io.c (revision 32239) @@ -60,6 +60,7 @@ #include #include #include +#include #include "event.h" #include #include "route_style.h" @@ -539,6 +540,7 @@ pcb_board_t *newPCB = pcb_board_new_(rnd_false); pcb_board_t *oldPCB; rnd_conf_role_t settings_dest; + int pres; #ifdef DEBUG double elapsed; clock_t start, end; @@ -562,7 +564,11 @@ } /* new data isn't added to the undo list */ - if (!pcb_parse_pcb(PCB, new_filename, fmt, settings_dest, how & 0x10)) { + rnd_hid_menu_merge_inhibit_inc(); + pres = pcb_parse_pcb(PCB, new_filename, fmt, settings_dest, how & 0x10); + rnd_hid_menu_merge_inhibit_dec(); + + if (!pres) { pcb_board_remove(oldPCB); pcb_board_new_postproc(PCB, 0);