summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--client.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/client.c b/client.c
index 54eced1..4df5be8 100644
--- a/client.c
+++ b/client.c
@@ -48,6 +48,9 @@ client_init(Window win, struct screen_ctx *sc)
 	struct client_ctx	*cc;
 	XWindowAttributes	 wattr;
 	int			 mapped;
+	Window			 rwin, cwin;
+	int			 x, y, wx, wy, activate = 0;
+	unsigned int		 mask;
 
 	if (win == None)
 		return(NULL);
@@ -97,6 +100,10 @@ client_init(Window win, struct screen_ctx *sc)
 		client_move(cc);
 		if ((cc->wmh) && (cc->wmh->flags & StateHint))
 			client_set_wm_state(cc, cc->wmh->initial_state);
+	} else {
+		if ((XQueryPointer(X_Dpy, cc->win, &rwin, &cwin,
+		    &x, &y, &wx, &wy, &mask)) && (cwin != None))
+			activate = 1;
 	}
 
 	XSelectInput(X_Dpy, cc->win, ColormapChangeMask | EnterWindowMask |
@@ -134,6 +141,9 @@ out:
 	XSync(X_Dpy, False);
 	XUngrabServer(X_Dpy);
 
+	if (activate)
+		client_setactive(cc);
+
 	return(cc);
 }