mirror of
https://github.com/tmux/tmux.git
synced 2026-09-17 10:34:46 +00:00
Compare commits
8 Commits
3.7c
...
release_3.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e9634d4074 | ||
|
|
181e818b93 | ||
|
|
1c98c3a2a3 | ||
|
|
d28c9f613d | ||
|
|
0d7b9e87f4 | ||
|
|
4ec08da492 | ||
|
|
22cdf6acac | ||
|
|
83b9aff1ae |
6
CHANGES
6
CHANGES
@@ -1,3 +1,9 @@
|
|||||||
|
CHANGES FROM 3.7c TO 3.7d
|
||||||
|
|
||||||
|
* Do not use stale pointers to windows when panes in modes are joined.
|
||||||
|
|
||||||
|
* Fix problem where list-keys output can go to view mode instead of stdout.
|
||||||
|
|
||||||
CHANGES FROM 3.7b TO 3.7c
|
CHANGES FROM 3.7b TO 3.7c
|
||||||
|
|
||||||
* Build with jemalloc on macOS to avoid what appears to be a bug in calloc
|
* Build with jemalloc on macOS to avoid what appears to be a bug in calloc
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ cmd_list_keys_exec(struct cmd *self, struct cmdq_item *item)
|
|||||||
cmd_list_keys_format_add_key_binding(ft, l[i], prefix);
|
cmd_list_keys_format_add_key_binding(ft, l[i], prefix);
|
||||||
|
|
||||||
line = format_expand(ft, template);
|
line = format_expand(ft, template);
|
||||||
if ((single && tc != NULL) || n == 1)
|
if (single && tc != NULL && (~tc->flags & CLIENT_CONTROL))
|
||||||
status_message_set(tc, -1, 1, 0, 0, "%s", line);
|
status_message_set(tc, -1, 1, 0, 0, "%s", line);
|
||||||
else if (*line != '\0')
|
else if (*line != '\0')
|
||||||
cmdq_print(item, "%s", line);
|
cmdq_print(item, "%s", line);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# configure.ac
|
# configure.ac
|
||||||
|
|
||||||
AC_INIT([tmux], 3.7c)
|
AC_INIT([tmux], 3.7d)
|
||||||
AC_PREREQ([2.60])
|
AC_PREREQ([2.60])
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR(etc)
|
AC_CONFIG_AUX_DIR(etc)
|
||||||
|
|||||||
4
grid.c
4
grid.c
@@ -1538,7 +1538,7 @@ grid_wrap_position(struct grid *gd, u_int px, u_int py, u_int *wx, u_int *wy)
|
|||||||
void
|
void
|
||||||
grid_unwrap_position(struct grid *gd, u_int *px, u_int *py, u_int wx, u_int wy)
|
grid_unwrap_position(struct grid *gd, u_int *px, u_int *py, u_int wx, u_int wy)
|
||||||
{
|
{
|
||||||
u_int yy, ay = 0;
|
u_int yy, ay = 0, ey = gd->hsize + gd->sy - 1;
|
||||||
|
|
||||||
for (yy = 0; yy < gd->hsize + gd->sy - 1; yy++) {
|
for (yy = 0; yy < gd->hsize + gd->sy - 1; yy++) {
|
||||||
if (ay == wy)
|
if (ay == wy)
|
||||||
@@ -1552,7 +1552,7 @@ grid_unwrap_position(struct grid *gd, u_int *px, u_int *py, u_int wx, u_int wy)
|
|||||||
* until we find the end or the line now containing wx.
|
* until we find the end or the line now containing wx.
|
||||||
*/
|
*/
|
||||||
if (wx == UINT_MAX) {
|
if (wx == UINT_MAX) {
|
||||||
while (gd->linedata[yy].flags & GRID_LINE_WRAPPED)
|
while (yy < ey && gd->linedata[yy].flags & GRID_LINE_WRAPPED)
|
||||||
yy++;
|
yy++;
|
||||||
wx = gd->linedata[yy].cellused;
|
wx = gd->linedata[yy].cellused;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
2
popup.c
2
popup.c
@@ -110,6 +110,7 @@ popup_free(struct popup_data *pd)
|
|||||||
|
|
||||||
if (pd->job != NULL)
|
if (pd->job != NULL)
|
||||||
job_free(pd->job);
|
job_free(pd->job);
|
||||||
|
if (pd->ictx != NULL)
|
||||||
input_free(pd->ictx);
|
input_free(pd->ictx);
|
||||||
|
|
||||||
free(pd->or[0].ranges);
|
free(pd->or[0].ranges);
|
||||||
@@ -278,6 +279,7 @@ popup_check_cb(struct client* c, void *data, u_int px, u_int py, u_int nx)
|
|||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
r->used = k;
|
||||||
return (r);
|
return (r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1201,6 +1201,8 @@ screen_redraw_get_visible_ranges(struct window_pane *base_wp, int px,
|
|||||||
|
|
||||||
for (i = 0; i < r->used; i++) {
|
for (i = 0; i < r->used; i++) {
|
||||||
ri = &r->ranges[i];
|
ri = &r->ranges[i];
|
||||||
|
if (ri->nx == 0)
|
||||||
|
continue;
|
||||||
if (w->sb_pos == PANE_SCROLLBARS_LEFT) {
|
if (w->sb_pos == PANE_SCROLLBARS_LEFT) {
|
||||||
if (wp->xoff > sb_w)
|
if (wp->xoff > sb_w)
|
||||||
lb = wp->xoff - 1 - sb_w;
|
lb = wp->xoff - 1 - sb_w;
|
||||||
@@ -1218,6 +1220,8 @@ screen_redraw_get_visible_ranges(struct window_pane *base_wp, int px,
|
|||||||
rb = wp->xoff + wp->sx + sb_w;
|
rb = wp->xoff + wp->sx + sb_w;
|
||||||
if (rb > (int)w->sx)
|
if (rb > (int)w->sx)
|
||||||
rb = w->sx - 1;
|
rb = w->sx - 1;
|
||||||
|
if (lb > rb)
|
||||||
|
continue;
|
||||||
|
|
||||||
sx = ri->px;
|
sx = ri->px;
|
||||||
ex = sx + ri->nx - 1;
|
ex = sx + ri->nx - 1;
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ const struct window_mode window_client_mode = {
|
|||||||
|
|
||||||
struct window_client_itemdata {
|
struct window_client_itemdata {
|
||||||
struct client *c;
|
struct client *c;
|
||||||
|
char *ttyname;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct window_client_modedata {
|
struct window_client_modedata {
|
||||||
@@ -110,6 +111,7 @@ static void
|
|||||||
window_client_free_item(struct window_client_itemdata *item)
|
window_client_free_item(struct window_client_itemdata *item)
|
||||||
{
|
{
|
||||||
server_client_unref(item->c);
|
server_client_unref(item->c);
|
||||||
|
free(item->ttyname);
|
||||||
free(item);
|
free(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,6 +139,7 @@ window_client_build(void *modedata, struct sort_criteria *sort_crit,
|
|||||||
|
|
||||||
item = window_client_add_item(data);
|
item = window_client_add_item(data);
|
||||||
item->c = l[i];
|
item->c = l[i];
|
||||||
|
item->ttyname = xstrdup(l[i]->ttyname);
|
||||||
|
|
||||||
l[i]->references++;
|
l[i]->references++;
|
||||||
}
|
}
|
||||||
@@ -381,7 +384,7 @@ window_client_key(struct window_mode_entry *wme, struct client *c,
|
|||||||
break;
|
break;
|
||||||
case '\r':
|
case '\r':
|
||||||
item = mode_tree_get_current(mtd);
|
item = mode_tree_get_current(mtd);
|
||||||
mode_tree_run_command(c, NULL, data->command, item->c->ttyname);
|
mode_tree_run_command(c, NULL, data->command, item->ttyname);
|
||||||
finished = 1;
|
finished = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -254,6 +254,7 @@ window_tree_build_window(struct session *s, struct winlink *wl,
|
|||||||
u_int n, i;
|
u_int n, i;
|
||||||
int expanded;
|
int expanded;
|
||||||
struct format_tree *ft;
|
struct format_tree *ft;
|
||||||
|
uint64_t tag = FORMAT_NONE;
|
||||||
|
|
||||||
item = window_tree_add_item(data);
|
item = window_tree_add_item(data);
|
||||||
item->type = WINDOW_TREE_WINDOW;
|
item->type = WINDOW_TREE_WINDOW;
|
||||||
@@ -261,7 +262,9 @@ window_tree_build_window(struct session *s, struct winlink *wl,
|
|||||||
item->winlink = wl->idx;
|
item->winlink = wl->idx;
|
||||||
item->pane = -1;
|
item->pane = -1;
|
||||||
|
|
||||||
ft = format_create(NULL, NULL, FORMAT_PANE|wl->window->active->id, 0);
|
if (wl->window != NULL && wl->window->active != NULL)
|
||||||
|
tag = FORMAT_PANE|wl->window->active->id;
|
||||||
|
ft = format_create(NULL, NULL, tag, 0);
|
||||||
format_defaults(ft, NULL, s, wl, NULL);
|
format_defaults(ft, NULL, s, wl, NULL);
|
||||||
text = format_expand(ft, data->format);
|
text = format_expand(ft, data->format);
|
||||||
xasprintf(&name, "%u", wl->idx);
|
xasprintf(&name, "%u", wl->idx);
|
||||||
@@ -313,6 +316,7 @@ window_tree_build_session(struct session *s, void *modedata,
|
|||||||
u_int n, i, empty;
|
u_int n, i, empty;
|
||||||
int expanded;
|
int expanded;
|
||||||
struct format_tree *ft;
|
struct format_tree *ft;
|
||||||
|
uint64_t tag = FORMAT_NONE;
|
||||||
|
|
||||||
item = window_tree_add_item(data);
|
item = window_tree_add_item(data);
|
||||||
item->type = WINDOW_TREE_SESSION;
|
item->type = WINDOW_TREE_SESSION;
|
||||||
@@ -320,7 +324,9 @@ window_tree_build_session(struct session *s, void *modedata,
|
|||||||
item->winlink = -1;
|
item->winlink = -1;
|
||||||
item->pane = -1;
|
item->pane = -1;
|
||||||
|
|
||||||
ft = format_create(NULL, NULL, FORMAT_PANE|wl->window->active->id, 0);
|
if (wl != NULL && wl->window != NULL && wl->window->active != NULL)
|
||||||
|
tag = FORMAT_PANE|wl->window->active->id;
|
||||||
|
ft = format_create(NULL, NULL, tag, 0);
|
||||||
format_defaults(ft, NULL, s, NULL, NULL);
|
format_defaults(ft, NULL, s, NULL, NULL);
|
||||||
text = format_expand(ft, data->format);
|
text = format_expand(ft, data->format);
|
||||||
format_free(ft);
|
format_free(ft);
|
||||||
|
|||||||
Reference in New Issue
Block a user