aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server-client.c18
-rw-r--r--tmux.18
2 files changed, 18 insertions, 8 deletions
diff --git a/server-client.c b/server-client.c
index 6a94bb56..cec305f0 100644
--- a/server-client.c
+++ b/server-client.c
@@ -1148,10 +1148,6 @@ server_client_check_focus(struct window_pane *wp)
push = wp->flags & PANE_FOCUSPUSH;
wp->flags &= ~PANE_FOCUSPUSH;
- /* If we don't care about focus, forget it. */
- if (!(wp->base.mode & MODE_FOCUSON))
- return;
-
/* If we're not the active pane in our window, we're not focused. */
if (wp->window->active != wp)
goto not_focused;
@@ -1175,14 +1171,20 @@ server_client_check_focus(struct window_pane *wp)
}
not_focused:
- if (push || (wp->flags & PANE_FOCUSED))
- bufferevent_write(wp->event, "\033[O", 3);
+ if (push || (wp->flags & PANE_FOCUSED)) {
+ if (wp->base.mode & MODE_FOCUSON)
+ bufferevent_write(wp->event, "\033[O", 3);
+ notify_pane("pane-focus-out", wp);
+ }
wp->flags &= ~PANE_FOCUSED;
return;
focused:
- if (push || !(wp->flags & PANE_FOCUSED))
- bufferevent_write(wp->event, "\033[I", 3);
+ if (push || !(wp->flags & PANE_FOCUSED)) {
+ if (wp->base.mode & MODE_FOCUSON)
+ bufferevent_write(wp->event, "\033[I", 3);
+ notify_pane("pane-focus-in", wp);
+ }
wp->flags |= PANE_FOCUSED;
}
diff --git a/tmux.1 b/tmux.1
index 329279fd..303a4a30 100644
--- a/tmux.1
+++ b/tmux.1
@@ -3423,6 +3423,14 @@ Run when the program running in a pane exits, but
is on so the pane has not closed.
.It pane-exited
Run when the program running in a pane exits.
+.It pane-focus-in
+Run when the focus enters a pane, if the
+.Ic focus-events
+option is on.
+.It pane-focus-out
+Run when the focus exits a pane, if the
+.Ic focus-events
+option is on.
.It pane-set-clipboard
Run when the terminal clipboard is set using the
.Xr xterm 1