mirror of
https://github.com/tmux/tmux.git
synced 2025-01-07 16:28:48 +00:00
Limit lazy resize to panes in attached sessions only - those in
unattached are likely to have been resized by something like split-window where the user probably wants the resize to happen immediately. GitHub issue 1963.
This commit is contained in:
parent
d9c95c900c
commit
bad95db878
@ -1268,7 +1268,7 @@ server_client_loop(void)
|
|||||||
struct window_pane *wp;
|
struct window_pane *wp;
|
||||||
struct winlink *wl;
|
struct winlink *wl;
|
||||||
struct session *s;
|
struct session *s;
|
||||||
int focus;
|
int focus, attached, resize;
|
||||||
|
|
||||||
TAILQ_FOREACH(c, &clients, entry) {
|
TAILQ_FOREACH(c, &clients, entry) {
|
||||||
server_client_check_exit(c);
|
server_client_check_exit(c);
|
||||||
@ -1281,19 +1281,33 @@ server_client_loop(void)
|
|||||||
/*
|
/*
|
||||||
* Any windows will have been redrawn as part of clients, so clear
|
* Any windows will have been redrawn as part of clients, so clear
|
||||||
* their flags now. Also check pane focus and resize.
|
* their flags now. Also check pane focus and resize.
|
||||||
|
*
|
||||||
|
* As an optimization, panes in windows that are in an attached session
|
||||||
|
* but not the current window are not resized (this reduces the amount
|
||||||
|
* of work needed when, for example, resizing an X terminal a
|
||||||
|
* lot). Windows in no attached session are resized immediately since
|
||||||
|
* that is likely to have come from a command like split-window and be
|
||||||
|
* what the user wanted.
|
||||||
*/
|
*/
|
||||||
focus = options_get_number(global_options, "focus-events");
|
focus = options_get_number(global_options, "focus-events");
|
||||||
RB_FOREACH(w, windows, &windows) {
|
RB_FOREACH(w, windows, &windows) {
|
||||||
|
attached = resize = 0;
|
||||||
TAILQ_FOREACH(wl, &w->winlinks, wentry) {
|
TAILQ_FOREACH(wl, &w->winlinks, wentry) {
|
||||||
s = wl->session;
|
s = wl->session;
|
||||||
if (s->attached != 0 && s->curw == wl)
|
if (s->attached != 0)
|
||||||
|
attached = 1;
|
||||||
|
if (s->attached != 0 && s->curw == wl) {
|
||||||
|
resize = 1;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (!attached)
|
||||||
|
resize = 1;
|
||||||
TAILQ_FOREACH(wp, &w->panes, entry) {
|
TAILQ_FOREACH(wp, &w->panes, entry) {
|
||||||
if (wp->fd != -1) {
|
if (wp->fd != -1) {
|
||||||
if (focus)
|
if (focus)
|
||||||
server_client_check_focus(wp);
|
server_client_check_focus(wp);
|
||||||
if (wl != NULL)
|
if (resize)
|
||||||
server_client_check_resize(wp);
|
server_client_check_resize(wp);
|
||||||
}
|
}
|
||||||
wp->flags &= ~PANE_REDRAW;
|
wp->flags &= ~PANE_REDRAW;
|
||||||
|
Loading…
Reference in New Issue
Block a user