Hi!
I've been seeing a bug since... forever (?) in cwm, and I finally decided
to try to fix it. Here's how I reproduce it:
1. open emacs on group 1
2. start gnus, which will ask me a password
3. before emacs asks me the password, switch to group 2
4. go back to group 1 and... no emacs window
5. go to group 2 and back to 1 and emacs window is there waiting for input
There are probably easier ways to reproduce this, but this is how I got
annoyed with it.
After some debug, what I see is that in group_show(), after switching back
to group 1 (step 4.) the client does not have the CLIENT_HIDDEN flag set,
although xu_get_wm_state for the window is set to 'IconicState'. This is
because xu_ewmh_handle_net_wm_state_msg() will call client_toggle_hidden()
(action = _NET_WM_STATE_REMOVE).
The diff bellow fixes this behaviour (i.e. will toggle the flag only if
the client group is currently active). Is this the way to fix it?
Cheers,
--
Luís
diff --git a/app/cwm/client.c b/app/cwm/client.c
index e15005883ca6..991700d37155 100644
--- a/app/cwm/client.c
+++ b/app/cwm/client.c
@@ -280,7 +280,10 @@ client_toggle_freeze(struct client_ctx *cc)
void
client_toggle_hidden(struct client_ctx *cc)
{
- cc->flags ^= CLIENT_HIDDEN;
+ struct screen_ctx *sc = cc->sc;
+
+ if (sc->group_active == cc->gc)
+ cc->flags ^= CLIENT_HIDDEN;
xu_ewmh_set_net_wm_state(cc);
}