summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2015-04-27 07:49:37 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2015-04-27 07:49:37 +0000
commitd834f62977cb41cb3f3f391fc5135e0d3c3670a7 (patch)
treebb2bfa68d47a4dffaa0acc1db80c1c23d04f84b6
parenta886ce05f3c47ff0a5d7d58e6f504ee4f7235acf (diff)
If the requested pane is already active, do not unzoom the window (or do
anything else). Prevents mouse clicking when zoomed causing unzoom, reported by Jose Antonio Delgado Alfonso (with a different fix).
-rw-r--r--usr.bin/tmux/cmd-select-pane.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/usr.bin/tmux/cmd-select-pane.c b/usr.bin/tmux/cmd-select-pane.c
index efaac9a38ed..e8f50d39abd 100644
--- a/usr.bin/tmux/cmd-select-pane.c
+++ b/usr.bin/tmux/cmd-select-pane.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-select-pane.c,v 1.21 2015/04/19 21:05:27 nicm Exp $ */
+/* $OpenBSD: cmd-select-pane.c,v 1.22 2015/04/27 07:49:36 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -77,12 +77,6 @@ cmd_select_pane_exec(struct cmd *self, struct cmd_q *cmdq)
if ((wl = cmd_find_pane(cmdq, args_get(args, 't'), NULL, &wp)) == NULL)
return (CMD_RETURN_ERROR);
- server_unzoom_window(wp->window);
- if (!window_pane_visible(wp)) {
- cmdq_error(cmdq, "pane not visible");
- return (CMD_RETURN_ERROR);
- }
-
if (args_has(self->args, 'P') || args_has(self->args, 'g')) {
if (args_has(args, 'P')) {
style = args_get(args, 'P');
@@ -111,11 +105,23 @@ cmd_select_pane_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR);
}
- if (args_has(self->args, 'e'))
+ if (args_has(self->args, 'e')) {
wp->flags &= ~PANE_INPUTOFF;
- else if (args_has(self->args, 'd'))
+ return (CMD_RETURN_NORMAL);
+ }
+ if (args_has(self->args, 'd')) {
wp->flags |= PANE_INPUTOFF;
- else if (window_set_active_pane(wl->window, wp)) {
+ return (CMD_RETURN_NORMAL);
+ }
+
+ if (wp == wl->window->active)
+ return (CMD_RETURN_NORMAL);
+ server_unzoom_window(wp->window);
+ if (!window_pane_visible(wp)) {
+ cmdq_error(cmdq, "pane not visible");
+ return (CMD_RETURN_ERROR);
+ }
+ if (window_set_active_pane(wl->window, wp)) {
server_status_window(wl->window);
server_redraw_window_borders(wl->window);
}