mirror of
https://github.com/tmux/tmux.git
synced 2025-12-18 04:46:05 +00:00
Place cursor on correct line if message-line is not 0, reported by
Alexis Hildebrandt.
This commit is contained in:
@@ -2905,8 +2905,8 @@ server_client_reset_state(struct client *c)
|
||||
struct window_pane *wp = server_client_get_pane(c), *loop;
|
||||
struct screen *s = NULL;
|
||||
struct options *oo = c->session->options;
|
||||
int mode = 0, cursor, flags, n;
|
||||
u_int cx = 0, cy = 0, ox, oy, sx, sy;
|
||||
int mode = 0, cursor, flags;
|
||||
u_int cx = 0, cy = 0, ox, oy, sx, sy, n;
|
||||
|
||||
if (c->flags & (CLIENT_CONTROL|CLIENT_SUSPENDED))
|
||||
return;
|
||||
@@ -2938,13 +2938,13 @@ server_client_reset_state(struct client *c)
|
||||
if (c->prompt_string != NULL) {
|
||||
n = options_get_number(oo, "status-position");
|
||||
if (n == 0)
|
||||
cy = 0;
|
||||
cy = status_prompt_line_at(c);
|
||||
else {
|
||||
n = status_line_size(c);
|
||||
if (n == 0)
|
||||
cy = tty->sy - 1;
|
||||
else
|
||||
n = status_line_size(c) - status_prompt_line_at(c);
|
||||
if (n <= tty->sy)
|
||||
cy = tty->sy - n;
|
||||
else
|
||||
cy = tty->sy - 1;
|
||||
}
|
||||
cx = c->prompt_cursor;
|
||||
} else if (c->overlay_draw == NULL) {
|
||||
|
||||
13
status.c
13
status.c
@@ -264,14 +264,19 @@ status_line_size(struct client *c)
|
||||
}
|
||||
|
||||
/* Get the prompt line number for client's session. 1 means at the bottom. */
|
||||
static u_int
|
||||
u_int
|
||||
status_prompt_line_at(struct client *c)
|
||||
{
|
||||
struct session *s = c->session;
|
||||
u_int line, lines;
|
||||
|
||||
if (c->flags & (CLIENT_STATUSOFF|CLIENT_CONTROL))
|
||||
return (1);
|
||||
return (options_get_number(s->options, "message-line"));
|
||||
lines = status_line_size(c);
|
||||
if (lines == 0)
|
||||
return (0);
|
||||
line = options_get_number(s->options, "message-line");
|
||||
if (line >= lines)
|
||||
return (lines - 1);
|
||||
return (line);
|
||||
}
|
||||
|
||||
/* Get window at window list position. */
|
||||
|
||||
1
tmux.h
1
tmux.h
@@ -2898,6 +2898,7 @@ extern u_int status_prompt_hsize[];
|
||||
void status_timer_start(struct client *);
|
||||
void status_timer_start_all(void);
|
||||
void status_update_cache(struct session *);
|
||||
u_int status_prompt_line_at(struct client *);
|
||||
int status_at_line(struct client *);
|
||||
u_int status_line_size(struct client *);
|
||||
struct style_range *status_get_range(struct client *, u_int, u_int);
|
||||
|
||||
Reference in New Issue
Block a user