summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2015-01-23 19:35:11 +0000
committerokan <okan>2015-01-23 19:35:11 +0000
commit5146f661bd970ea1aa7e05b3647bd9dc8a555a81 (patch)
tree221cc55b2b753ea5232c41043e3be761276ea2be
parent7936b9b2a7c7c3cc06d3fb60c22ed535b610cd63 (diff)
downloadcwm-5146f661bd970ea1aa7e05b3647bd9dc8a555a81.tar.gz
cwm-5146f661bd970ea1aa7e05b3647bd9dc8a555a81.tar.xz
cwm-5146f661bd970ea1aa7e05b3647bd9dc8a555a81.zip
First restore net_wm_state(ewmh), then wm_state(iccc); prevents clients
from re-hiding on restart due to flag toggling (note that this is ripe
for re-vamping). Behavior only observed on restarts.

Problem found by, and initial patch from, Henri Kemppainen (thanks!),
though ever so slightly different one applied.
-rw-r--r--client.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/client.c b/client.c
index f6aa714..5e9a267 100644
--- a/client.c
+++ b/client.c
@@ -63,7 +63,6 @@ client_init(Window win, struct screen_ctx *sc)
 {
 	struct client_ctx	*cc;
 	XWindowAttributes	 wattr;
-	long			 state;
 	int			 mapped;
 
 	if (win == None)
@@ -125,16 +124,16 @@ client_init(Window win, struct screen_ctx *sc)
 	/* Notify client of its configuration. */
 	client_config(cc);
 
-	if ((state = client_get_wm_state(cc)) < 0)
-		state = NormalState;
-
-	(state == IconicState) ? client_hide(cc) : client_unhide(cc);
-
 	TAILQ_INSERT_TAIL(&sc->clientq, cc, entry);
 
 	xu_ewmh_net_client_list(sc);
 	xu_ewmh_restore_net_wm_state(cc);
 
+	if (client_get_wm_state(cc) == IconicState)
+		client_hide(cc);
+	else
+		client_unhide(cc);
+
 	if (mapped)
 		group_autogroup(cc);