mirror of
https://github.com/tmux/tmux.git
synced 2025-09-03 06:17:04 +00:00
Merge branch 'obsd-master'
This commit is contained in:
53
window.c
53
window.c
@ -385,6 +385,18 @@ window_resize(struct window *w, u_int sx, u_int sy)
|
||||
w->sy = sy;
|
||||
}
|
||||
|
||||
int
|
||||
window_has_pane(struct window *w, struct window_pane *wp)
|
||||
{
|
||||
struct window_pane *wp1;
|
||||
|
||||
TAILQ_FOREACH(wp1, &w->panes, entry) {
|
||||
if (wp1 == wp)
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
window_set_active_pane(struct window *w, struct window_pane *wp)
|
||||
{
|
||||
@ -637,7 +649,7 @@ window_destroy_panes(struct window *w)
|
||||
char *
|
||||
window_printable_flags(struct session *s, struct winlink *wl)
|
||||
{
|
||||
char flags[BUFSIZ];
|
||||
char flags[32];
|
||||
int pos;
|
||||
|
||||
pos = 0;
|
||||
@ -704,6 +716,8 @@ window_pane_create(struct window *w, u_int sx, u_int sy, u_int hlimit)
|
||||
|
||||
wp->saved_grid = NULL;
|
||||
|
||||
memcpy(&wp->colgc, &grid_default_cell, sizeof wp->colgc);
|
||||
|
||||
screen_init(&wp->base, sx, sy, hlimit);
|
||||
wp->screen = &wp->base;
|
||||
|
||||
@ -1064,52 +1078,37 @@ window_pane_reset_mode(struct window_pane *wp)
|
||||
}
|
||||
|
||||
void
|
||||
window_pane_key(struct window_pane *wp, struct session *sess, int key)
|
||||
window_pane_key(struct window_pane *wp, struct client *c, struct session *s,
|
||||
int key, struct mouse_event *m)
|
||||
{
|
||||
struct window_pane *wp2;
|
||||
|
||||
if (KEYC_IS_MOUSE(key) && m == NULL)
|
||||
return;
|
||||
|
||||
if (wp->mode != NULL) {
|
||||
if (wp->mode->key != NULL)
|
||||
wp->mode->key(wp, sess, key);
|
||||
wp->mode->key(wp, c, s, key, m);
|
||||
return;
|
||||
}
|
||||
|
||||
if (wp->fd == -1 || wp->flags & PANE_INPUTOFF)
|
||||
return;
|
||||
|
||||
input_key(wp, key);
|
||||
input_key(wp, key, m);
|
||||
|
||||
if (KEYC_IS_MOUSE(key))
|
||||
return;
|
||||
if (options_get_number(&wp->window->options, "synchronize-panes")) {
|
||||
TAILQ_FOREACH(wp2, &wp->window->panes, entry) {
|
||||
if (wp2 == wp || wp2->mode != NULL)
|
||||
continue;
|
||||
if (wp2->fd != -1 && window_pane_visible(wp2))
|
||||
input_key(wp2, key);
|
||||
input_key(wp2, key, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
window_pane_mouse(struct window_pane *wp, struct session *sess,
|
||||
struct mouse_event *m)
|
||||
{
|
||||
if (!window_pane_visible(wp))
|
||||
return;
|
||||
|
||||
if (m->x < wp->xoff || m->x >= wp->xoff + wp->sx)
|
||||
return;
|
||||
if (m->y < wp->yoff || m->y >= wp->yoff + wp->sy)
|
||||
return;
|
||||
m->x -= wp->xoff;
|
||||
m->y -= wp->yoff;
|
||||
|
||||
if (wp->mode != NULL) {
|
||||
if (wp->mode->mouse != NULL &&
|
||||
options_get_number(&wp->window->options, "mode-mouse"))
|
||||
wp->mode->mouse(wp, sess, m);
|
||||
} else if (wp->fd != -1)
|
||||
input_mouse(wp, sess, m);
|
||||
}
|
||||
|
||||
int
|
||||
window_pane_visible(struct window_pane *wp)
|
||||
{
|
||||
|
Reference in New Issue
Block a user