avoid context switching when opening a new window until new window creation finished (use xctx->pending_fullzoom)

This commit is contained in:
stefan schippers 2025-09-27 01:02:36 +02:00
parent 8043c2af75
commit e8d29c9b42
3 changed files with 5 additions and 2 deletions

View File

@ -4575,6 +4575,8 @@ static int handle_window_switching(int event, int tabbed_interface, const char *
if((event == FocusIn || event == Expose || event == EnterNotify) &&
strcmp(xctx->current_win_path, win_path) ) {
struct stat buf;
if(xctx->pending_fullzoom == 1) return 0; /* no switching if opening a new window */
dbg(1, "handle_window_switching(): event=%d, ui_state=%d win_path=%s\n",
event, xctx->ui_state, win_path);
/* This will switch context only when copying stuff across windows
@ -4729,7 +4731,7 @@ int callback(const char *win_path, int event, int mx, int my, KeySym key, int bu
break;
case ConfigureNotify:
dbg(1,"callback(): ConfigureNotify event: %s\n", win_path);
dbg(1,"callback(): ConfigureNotify event: %s %dx%d\n", win_path, button, aux);
resetwin(1, 1, 0, 0, 0);
draw();
break;

View File

@ -2272,7 +2272,7 @@ void resetwin(int create_pixmap, int clear_pixmap, int force, int w, int h)
#else
XWindowAttributes wattr;
#endif
dbg(1, "resetwin(): create=%d, clear=%d, force=%d, w=%d, h=%d\n",
dbg(1, "\nresetwin(): create=%d, clear=%d, force=%d, w=%d, h=%d\n",
create_pixmap, clear_pixmap, force, w, h);
if(w && h) {
width = w;

View File

@ -8552,6 +8552,7 @@ proc set_geom {win {filename {}}} {
}
}
if {$geom ne {}} {
# puts "set_geom: setting geometry of $win to $geom"
wm geometry $win $geom
update
}