From c7501d4a284007826cee7c42060a2a328a2aaa4a Mon Sep 17 00:00:00 2001 From: Stefan Frederik Date: Sat, 3 Sep 2022 22:19:49 +0200 Subject: [PATCH] fix UI lockout (can not switch tabs) if a tab is closed with bindkey ctrl-q --- src/callback.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/callback.c b/src/callback.c index 96942a2c..f9aa7405 100644 --- a/src/callback.c +++ b/src/callback.c @@ -1490,11 +1490,13 @@ int callback(const char *winpath, int event, int mx, int my, KeySym key, } if(key=='q' && state == ControlMask) /* exit */ { + int remaining, save_sem; if(xctx->semaphore >= 2) break; if(!strcmp(xctx->current_win_path, ".drw")) { - int remaining; + save_sem = xctx->semaphore; /* tcleval("new_window destroy_all"); */ /* close child schematics */ remaining = new_schematic("destroy_all", NULL, NULL); + xctx->semaphore = save_sem; /* if(tclresult()[0] == '1') { */ if(!remaining) { if(xctx->modified) { @@ -1506,7 +1508,9 @@ int callback(const char *winpath, int event, int mx, int my, KeySym key, } } else { /* xschem new_schematic destroy asks user confirmation if schematic changed */ + save_sem = xctx->semaphore; new_schematic("destroy", xctx->current_win_path, NULL); + xctx->semaphore = save_sem; } break; }