From ee123c248951450100475717f5bd45f292d9bb4d Mon Sep 17 00:00:00 2001 From: nicm Date: Sun, 19 Apr 2015 21:05:27 +0000 Subject: Support setting the default window and pane background colours (window and active pane via window-style and window-active-style options, an individual pane by a new select-pane -P flag). From J Raynor. --- window.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'window.c') diff --git a/window.c b/window.c index 6a742a2e..4abcf495 100644 --- a/window.c +++ b/window.c @@ -705,6 +705,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; -- cgit From bf635e7741f7b881f67ec7e4a5caa02f7ff3d786 Mon Sep 17 00:00:00 2001 From: nicm Date: Sun, 19 Apr 2015 21:34:21 +0000 Subject: Rewrite of tmux mouse support which was a mess. Instead of having options for "mouse-this" and "mouse-that", mouse events may be bound as keys and there is one option "mouse" that turns on mouse support entirely (set -g mouse on). See the new MOUSE SUPPORT section of the man page for description of the key names and new flags (-t= to specify the pane or window under mouse as a target, and send-keys -M to pass through a mouse event). The default builtin bindings for the mouse are: bind -n MouseDown1Pane select-pane -t=; send-keys -M bind -n MouseDown1Status select-window -t= bind -n MouseDrag1Pane copy-mode -M bind -n MouseDrag1Border resize-pane -M To get the effect of turning mode-mouse off, do: unbind -n MouseDrag1Pane unbind -temacs-copy MouseDrag1Pane The old mouse options are now gone, set-option -q may be used to suppress warnings if mixing configuration files. --- window.c | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) (limited to 'window.c') diff --git a/window.c b/window.c index 4abcf495..53e74a1d 100644 --- a/window.c +++ b/window.c @@ -386,6 +386,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) { @@ -1052,52 +1064,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) { -- cgit From 6f587570ed8c0e2db8bd4e676f4363b0824beb5f Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 20 Apr 2015 07:50:49 +0000 Subject: Use a more sensible buffer size for flags string. --- window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'window.c') diff --git a/window.c b/window.c index 53e74a1d..86cc8bb0 100644 --- a/window.c +++ b/window.c @@ -650,7 +650,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; -- cgit