From 9670368f9de8f2e9df973b6ca216c7438f3002f6 Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Sun, 17 Mar 2024 02:13:54 +0100 Subject: [PATCH] set_modify and undo() in `xschem image` commands --- src/scheduler.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/scheduler.c b/src/scheduler.c index e9d86ac2..9188c168 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -2065,18 +2065,22 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg if(!strcmp(argv[i], "transp_black")) what |= 16; if(!strcmp(argv[i], "write_back")) what |= 256; } - rebuild_selected_array(); - for(n=0; n < xctx->lastsel; ++n) { - if(xctx->sel_array[n].type == xRECT) { - i = xctx->sel_array[n].n; - c = xctx->sel_array[n].col; - r = &xctx->rect[c][i]; - if(c == GRIDLAYER && r->flags & 1024) { + if(what) { + rebuild_selected_array(); + if(what & 256) set_modify(1); + xctx->push_undo(); + for(n=0; n < xctx->lastsel; ++n) { + if(xctx->sel_array[n].type == xRECT) { + i = xctx->sel_array[n].n; + c = xctx->sel_array[n].col; + r = &xctx->rect[c][i]; + if(c == GRIDLAYER && r->flags & 1024) { edit_image(what, &xctx->rect[c][i]); - } + } + } } + draw(); } - draw(); Tcl_ResetResult(interp); } else