From de5eb7446d88070b7c494a90a8b59e9f34911f91 Mon Sep 17 00:00:00 2001 From: Stefan Frederik Date: Sat, 6 Aug 2022 23:42:43 +0200 Subject: [PATCH] scheduler.c "place_symbol" : analyze selected symbol and set INITIALINSTDIR before doing unselect_all() --- src/scheduler.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/scheduler.c b/src/scheduler.c index 582f6b6c..77060274 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -1838,6 +1838,11 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg int ret; cmd_found = 1; xctx->semaphore++; + rebuild_selected_array(); + if(xctx->lastsel && xctx->sel_array[0].type==ELEMENT) { + tclvareval("set INITIALINSTDIR [file dirname {", + abs_sym_path(xctx->inst[xctx->sel_array[0].n].name, ""), "}]", NULL); + } unselect_all(); xctx->mx_double_save = xctx->mousex_snap; xctx->my_double_save = xctx->mousey_snap; @@ -1847,15 +1852,8 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg ret = place_symbol(-1,argv[2],xctx->mousex_snap, xctx->mousey_snap, 0, 0, NULL, 4, 1, 1/*to_push_undo*/); } else { xctx->last_command = 0; - rebuild_selected_array(); - if(xctx->lastsel && xctx->sel_array[0].type==ELEMENT) { - char f[PATH_MAX]; - my_strncpy(f, abs_sym_path(xctx->inst[xctx->sel_array[0].n].name, ""), S(f)); - tclvareval("set INITIALINSTDIR [file dirname {", f, "}]", NULL); - } ret = place_symbol(-1,NULL,xctx->mousex_snap, xctx->mousey_snap, 0, 0, NULL, 4, 1, 1/*to_push_undo*/); } - if(ret) { xctx->mousey_snap = xctx->my_double_save; xctx->mousex_snap = xctx->mx_double_save;