diff --git a/status.c b/status.c
index fee9f2d6..af35ff64 100644
--- a/status.c
+++ b/status.c
@@ -141,7 +141,7 @@ status_set_window_at(struct client *c, u_int x)
 	struct session	*s = c->session;
 	struct winlink	*wl;
 
-	x += s->wlmouse;
+	x += c->wlmouse;
 	RB_FOREACH(wl, winlinks, &s->windows) {
 		if (x < wl->status_width &&
 			session_select(s, wl->idx) == 0) {
@@ -356,7 +356,7 @@ draw:
 		wloffset++;
 
 	/* Copy the window list. */
-	s->wlmouse = -wloffset + wlstart;
+	c->wlmouse = -wloffset + wlstart;
 	screen_write_cursormove(&ctx, wloffset, 0);
 	screen_write_copy(&ctx, &window_list, wlstart, 0, wlwidth, 1);
 	screen_free(&window_list);
diff --git a/tmux.h b/tmux.h
index 51fe79a4..a2c1d9fb 100644
--- a/tmux.h
+++ b/tmux.h
@@ -975,8 +975,6 @@ struct session {
 
 	struct environ	 environ;
 
-	int		 wlmouse;
-
 	int		 references;
 
 	TAILQ_ENTRY(session) gentry;
@@ -1199,6 +1197,8 @@ struct client {
 
 	struct mouse_event last_mouse;
 
+	int		 wlmouse;
+
 	int		 references;
 };
 ARRAY_DECL(clients, struct client *);