mirror of
https://github.com/tmux/tmux.git
synced 2025-10-26 12:27:15 +00:00
Move lazy resize from the pane to the window, there is no point in
resizing the window unless it is the current window, and if we do and don't resize the pane until later there are problems if the size changes from A to B then back to A.
This commit is contained in:
25
resize.c
25
resize.c
@@ -61,6 +61,7 @@ resize_window(struct window *w, u_int sx, u_int sy, int xpixel, int ypixel)
|
||||
tty_update_window_offset(w);
|
||||
server_redraw_window(w);
|
||||
notify_window("window-layout-changed", w);
|
||||
w->flags &= ~WINDOW_RESIZE;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -346,16 +347,30 @@ recalculate_size(struct window *w)
|
||||
changed = 0;
|
||||
break;
|
||||
}
|
||||
if (changed && w->sx == sx && w->sy == sy)
|
||||
changed = 0;
|
||||
if (w->flags & WINDOW_RESIZE) {
|
||||
if (changed && w->new_sx == sx && w->new_sy == sy)
|
||||
changed = 0;
|
||||
} else {
|
||||
if (changed && w->sx == sx && w->sy == sy)
|
||||
changed = 0;
|
||||
}
|
||||
|
||||
if (!changed) {
|
||||
tty_update_window_offset(w);
|
||||
return;
|
||||
}
|
||||
log_debug("%s: @%u changed to %u,%u (%ux%u)", __func__, w->id, sx, sy,
|
||||
xpixel, ypixel);
|
||||
resize_window(w, sx, sy, xpixel, ypixel);
|
||||
log_debug("%s: @%u new size %u,%u", __func__, w->id, sx, sy);
|
||||
if (type == WINDOW_SIZE_MANUAL)
|
||||
resize_window(w, sx, sy, xpixel, ypixel);
|
||||
else {
|
||||
w->new_sx = sx;
|
||||
w->new_sy = sy;
|
||||
w->new_xpixel = xpixel;
|
||||
w->new_ypixel = ypixel;
|
||||
|
||||
w->flags |= WINDOW_RESIZE;
|
||||
tty_update_window_offset(w);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user