aboutsummaryrefslogtreecommitdiff
path: root/window.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2009-10-09 07:27:00 +0000
committerNicholas Marriott <nicm@openbsd.org>2009-10-09 07:27:00 +0000
commit3af09ac94697097d5a8cd45b82638ed9c3e941cc (patch)
treee1206462446deac33cf7611c288504b5abee73a9 /window.c
parentd5281848361ede97d871553b011a706457acabd0 (diff)
downloadrtmux-3af09ac94697097d5a8cd45b82638ed9c3e941cc.tar.gz
rtmux-3af09ac94697097d5a8cd45b82638ed9c3e941cc.tar.bz2
rtmux-3af09ac94697097d5a8cd45b82638ed9c3e941cc.zip
Add a simple synchronize-panes window option: when set, all input to any pane
that is part of the window is also sent to all other panes in the same window. Suggested by several, most recently Tomasz Pajor.
Diffstat (limited to 'window.c')
-rw-r--r--window.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/window.c b/window.c
index b663acf3..9d2f3975 100644
--- a/window.c
+++ b/window.c
@@ -610,14 +610,26 @@ window_pane_parse(struct window_pane *wp)
void
window_pane_key(struct window_pane *wp, struct client *c, int key)
{
+ struct window_pane *wp2;
+
if (wp->fd == -1 || !window_pane_visible(wp))
return;
if (wp->mode != NULL) {
if (wp->mode->key != NULL)
wp->mode->key(wp, c, key);
- } else
- input_key(wp, key);
+ return;
+ }
+
+ input_key(wp, key);
+ 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);
+ }
+ }
}
void