summaryrefslogtreecommitdiffstats
path: root/cmd-select-pane.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd-select-pane.c')
-rw-r--r--cmd-select-pane.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/cmd-select-pane.c b/cmd-select-pane.c
index 224370ab..3b639e06 100644
--- a/cmd-select-pane.c
+++ b/cmd-select-pane.c
@@ -87,10 +87,11 @@ cmd_select_pane_exec(struct cmd *self, struct cmdq_item *item)
const struct cmd_entry *entry = cmd_get_entry(self);
struct cmd_find_state *current = cmdq_get_current(item);
struct cmd_find_state *target = cmdq_get_target(item);
+ struct client *c = cmdq_get_client(item);
struct winlink *wl = target->wl;
struct window *w = wl->window;
struct session *s = target->s;
- struct window_pane *wp = target->wp, *lastwp, *markedwp;
+ struct window_pane *wp = target->wp, *activewp, *lastwp, *markedwp;
struct options *oo = wp->options;
char *title;
const char *style;
@@ -201,16 +202,21 @@ cmd_select_pane_exec(struct cmd *self, struct cmdq_item *item)
return (CMD_RETURN_NORMAL);
}
- if (wp == w->active)
+ if (c->session != NULL && (c->flags & CLIENT_ACTIVEPANE))
+ activewp = server_client_get_pane(c);
+ else
+ activewp = w->active;
+ if (wp == activewp)
return (CMD_RETURN_NORMAL);
if (window_push_zoom(w, args_has(args, 'Z')))
server_redraw_window(w);
window_redraw_active_switch(w, wp);
- if (window_set_active_pane(w, wp, 1)) {
+ if (c->session != NULL && (c->flags & CLIENT_ACTIVEPANE))
+ server_client_set_pane(c, wp);
+ else if (window_set_active_pane(w, wp, 1))
cmd_find_from_winlink_pane(current, wl, wp, 0);
- cmdq_insert_hook(s, item, current, "after-select-pane");
- cmd_select_pane_redraw(w);
- }
+ cmdq_insert_hook(s, item, current, "after-select-pane");
+ cmd_select_pane_redraw(w);
if (window_pop_zoom(w))
server_redraw_window(w);