summary refs log tree commit diff
path: root/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'client.c')
-rw-r--r--client.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/client.c b/client.c
index 632f3f3..1cb0021 100644
--- a/client.c
+++ b/client.c
@@ -55,18 +55,26 @@ client_find(Window win)
 }
 
 struct client_ctx *
-client_init(Window win, struct screen_ctx *sc, int mapped)
+client_init(Window win, struct screen_ctx *sc)
 {
 	struct client_ctx	*cc;
 	XWindowAttributes	 wattr;
 	long			 state;
+	int			 mapped;
 
 	if (win == None)
 		return (NULL);
 	if (!XGetWindowAttributes(X_Dpy, win, &wattr))
 		return (NULL);
-	if (sc == NULL)
+
+	if (sc == NULL) {
 		sc = screen_fromroot(wattr.root);
+		mapped = 1;
+	} else {
+		if (wattr.override_redirect || wattr.map_state != IsViewable)
+			return (NULL);
+		mapped = wattr.map_state != IsUnmapped;
+	}
 
 	cc = xcalloc(1, sizeof(*cc));