mirror of
https://github.com/tmux/tmux.git
synced 2026-10-06 17:49:52 +00:00
Merge remote-tracking branch 'refs/remotes/tmux-openbsd/master'
* refs/remotes/tmux-openbsd/master:
Correct a comparison ('\0' should be 0).
If a pane has no scrollbar, don't bother to redraw it, and if redraw is deferred change scrollbar redraws into redraw-all-scrollbars not redraw entire window. GitHub issue 5529.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: server-client.c,v 1.506 2026/08/24 07:08:19 nicm Exp $ */
|
/* $OpenBSD: server-client.c,v 1.507 2026/08/24 21:17:19 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
@@ -2484,7 +2484,7 @@ server_client_check_redraw(struct client *c)
|
|||||||
|
|
||||||
/* Work out if a redraw is actually needed. */
|
/* Work out if a redraw is actually needed. */
|
||||||
needed = 0;
|
needed = 0;
|
||||||
if (c->flags & CLIENT_ALLREDRAWFLAGS)
|
if (c->flags & (CLIENT_ALLREDRAWFLAGS|CLIENT_REDRAWSCROLLBARS))
|
||||||
needed = 1;
|
needed = 1;
|
||||||
else if (server_client_any_pane_redraw(c))
|
else if (server_client_any_pane_redraw(c))
|
||||||
needed = 1;
|
needed = 1;
|
||||||
@@ -2510,8 +2510,14 @@ server_client_check_redraw(struct client *c)
|
|||||||
log_debug("redraw timer started");
|
log_debug("redraw timer started");
|
||||||
evtimer_add(&ev, &tv);
|
evtimer_add(&ev, &tv);
|
||||||
}
|
}
|
||||||
if (server_client_any_pane_redraw(c))
|
TAILQ_FOREACH(wp, &w->panes, entry) {
|
||||||
c->flags |= CLIENT_REDRAWWINDOW;
|
if (wp->flags & PANE_REDRAW) {
|
||||||
|
c->flags |= CLIENT_REDRAWWINDOW;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (wp->flags & PANE_REDRAWSCROLLBAR)
|
||||||
|
c->flags |= CLIENT_REDRAWSCROLLBARS;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2530,7 +2536,8 @@ server_client_check_redraw(struct client *c)
|
|||||||
log_debug("%s: redraw pane %%%u", __func__,
|
log_debug("%s: redraw pane %%%u", __func__,
|
||||||
wp->id);
|
wp->id);
|
||||||
redraw_pane(c, wp);
|
redraw_pane(c, wp);
|
||||||
} else if (wp->flags & PANE_REDRAWSCROLLBAR) {
|
} else if ((wp->flags & PANE_REDRAWSCROLLBAR) ||
|
||||||
|
(c->flags & CLIENT_REDRAWSCROLLBARS)) {
|
||||||
log_debug("%s: redraw scrollbar %%%u", __func__,
|
log_debug("%s: redraw scrollbar %%%u", __func__,
|
||||||
wp->id);
|
wp->id);
|
||||||
redraw_pane_scrollbar(c, wp);
|
redraw_pane_scrollbar(c, wp);
|
||||||
@@ -2560,7 +2567,8 @@ server_client_check_redraw(struct client *c)
|
|||||||
* All the redraw flags can now be cleared. Also record how many bytes
|
* All the redraw flags can now be cleared. Also record how many bytes
|
||||||
* were written.
|
* were written.
|
||||||
*/
|
*/
|
||||||
c->flags &= ~(CLIENT_ALLREDRAWFLAGS|CLIENT_STATUSFORCE);
|
c->flags &= ~(CLIENT_ALLREDRAWFLAGS|CLIENT_REDRAWSCROLLBARS|
|
||||||
|
CLIENT_STATUSFORCE);
|
||||||
c->redraw = EVBUFFER_LENGTH(tty->out);
|
c->redraw = EVBUFFER_LENGTH(tty->out);
|
||||||
log_debug("%s: redraw added %zu bytes", c->name, c->redraw);
|
log_debug("%s: redraw added %zu bytes", c->name, c->redraw);
|
||||||
}
|
}
|
||||||
|
|||||||
4
tmux.h
4
tmux.h
@@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: tmux.h,v 1.1429 2026/08/20 09:19:24 nicm Exp $ */
|
/* $OpenBSD: tmux.h,v 1.1430 2026/08/24 21:17:19 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
@@ -2290,7 +2290,7 @@ struct client {
|
|||||||
#define CLIENT_STARTSERVER 0x10000000
|
#define CLIENT_STARTSERVER 0x10000000
|
||||||
#define CLIENT_REDRAWMENU 0x20000000
|
#define CLIENT_REDRAWMENU 0x20000000
|
||||||
#define CLIENT_NOFORK 0x40000000
|
#define CLIENT_NOFORK 0x40000000
|
||||||
/* 0x80000000ULL unused */
|
#define CLIENT_REDRAWSCROLLBARS 0x80000000ULL
|
||||||
#define CLIENT_CONTROL_PAUSEAFTER 0x100000000ULL
|
#define CLIENT_CONTROL_PAUSEAFTER 0x100000000ULL
|
||||||
#define CLIENT_CONTROL_WAITEXIT 0x200000000ULL
|
#define CLIENT_CONTROL_WAITEXIT 0x200000000ULL
|
||||||
#define CLIENT_WINDOWSIZECHANGED 0x400000000ULL
|
#define CLIENT_WINDOWSIZECHANGED 0x400000000ULL
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: window-buffer.c,v 1.51 2026/07/15 12:45:39 nicm Exp $ */
|
/* $OpenBSD: window-buffer.c,v 1.52 2026/08/24 21:19:40 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
@@ -567,9 +567,7 @@ window_buffer_edit_close_cb(char *buf, size_t len, void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
oldbuf = paste_buffer_data(pb, &oldlen);
|
oldbuf = paste_buffer_data(pb, &oldlen);
|
||||||
if (oldlen != '\0' &&
|
if (oldlen != 0 && oldbuf[oldlen - 1] != '\n' && buf[len - 1] == '\n')
|
||||||
oldbuf[oldlen - 1] != '\n' &&
|
|
||||||
buf[len - 1] == '\n')
|
|
||||||
len--;
|
len--;
|
||||||
if (len != 0)
|
if (len != 0)
|
||||||
paste_replace(pb, buf, len);
|
paste_replace(pb, buf, len);
|
||||||
|
|||||||
4
window.c
4
window.c
@@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: window.c,v 1.372 2026/08/24 07:14:54 nicm Exp $ */
|
/* $OpenBSD: window.c,v 1.373 2026/08/24 21:17:19 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
@@ -1478,6 +1478,8 @@ window_pane_scrollbar_overlay_visible(struct window_pane *wp)
|
|||||||
void
|
void
|
||||||
window_pane_scrollbar_redraw(struct window_pane *wp)
|
window_pane_scrollbar_redraw(struct window_pane *wp)
|
||||||
{
|
{
|
||||||
|
if (!window_pane_scrollbar_visible(wp))
|
||||||
|
return;
|
||||||
if (window_pane_scrollbar_overlay_visible(wp)) {
|
if (window_pane_scrollbar_overlay_visible(wp)) {
|
||||||
wp->flags |= PANE_REDRAW;
|
wp->flags |= PANE_REDRAW;
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user