version 1.213, 2017/02/14 18:13:05 |
version 1.214, 2017/03/09 17:06:35 |
|
|
static void server_client_dispatch_identify(struct client *, struct imsg *); |
static void server_client_dispatch_identify(struct client *, struct imsg *); |
static void server_client_dispatch_shell(struct client *); |
static void server_client_dispatch_shell(struct client *); |
|
|
|
/* Idenfity mode callback. */ |
|
static void |
|
server_client_callback_identify(__unused int fd, __unused short events, void *data) |
|
{ |
|
server_client_clear_identify(data, NULL); |
|
} |
|
|
|
/* Set identify mode on client. */ |
|
void |
|
server_client_set_identify(struct client *c) |
|
{ |
|
struct timeval tv; |
|
int delay; |
|
|
|
delay = options_get_number(c->session->options, "display-panes-time"); |
|
tv.tv_sec = delay / 1000; |
|
tv.tv_usec = (delay % 1000) * 1000L; |
|
|
|
if (event_initialized(&c->identify_timer)) |
|
evtimer_del(&c->identify_timer); |
|
evtimer_set(&c->identify_timer, server_client_callback_identify, c); |
|
evtimer_add(&c->identify_timer, &tv); |
|
|
|
c->flags |= CLIENT_IDENTIFY; |
|
c->tty.flags |= (TTY_FREEZE|TTY_NOCURSOR); |
|
server_redraw_client(c); |
|
} |
|
|
|
/* Clear identify mode on client. */ |
|
void |
|
server_client_clear_identify(struct client *c, struct window_pane *wp) |
|
{ |
|
if (~c->flags & CLIENT_IDENTIFY) |
|
return; |
|
c->flags &= ~CLIENT_IDENTIFY; |
|
|
|
if (c->identify_callback != NULL) |
|
c->identify_callback(c, wp); |
|
|
|
c->tty.flags &= ~(TTY_FREEZE|TTY_NOCURSOR); |
|
server_redraw_client(c); |
|
} |
|
|
/* Check if this client is inside this server. */ |
/* Check if this client is inside this server. */ |
int |
int |
server_client_check_nested(struct client *c) |
server_client_check_nested(struct client *c) |
|
|
|
|
c->flags |= CLIENT_DEAD; |
c->flags |= CLIENT_DEAD; |
|
|
server_clear_identify(c, NULL); |
server_client_clear_identify(c, NULL); |
status_prompt_clear(c); |
status_prompt_clear(c); |
status_message_clear(c); |
status_message_clear(c); |
|
|
|
|
wp = window_pane_at_index(w, key - '0'); |
wp = window_pane_at_index(w, key - '0'); |
if (wp != NULL && !window_pane_visible(wp)) |
if (wp != NULL && !window_pane_visible(wp)) |
wp = NULL; |
wp = NULL; |
server_clear_identify(c, wp); |
server_client_clear_identify(c, wp); |
return; |
return; |
} |
} |
|
|
/* Handle status line. */ |
/* Handle status line. */ |
if (!(c->flags & CLIENT_READONLY)) { |
if (!(c->flags & CLIENT_READONLY)) { |
status_message_clear(c); |
status_message_clear(c); |
server_clear_identify(c, NULL); |
server_client_clear_identify(c, NULL); |
} |
} |
if (c->prompt_string != NULL) { |
if (c->prompt_string != NULL) { |
if (c->flags & CLIENT_READONLY) |
if (c->flags & CLIENT_READONLY) |