CVSROOT: /cvs
Module name: xenocara
Changes by: [email protected] 2009/01/17 11:41:50
Modified files:
app/cwm : calmwm.h client.c xevents.c
Log message:
Finally fix the really annoying race where if you rapidly switch groups several
times you'd end up losing clients (thinking they had gone away).
>From the ICCCM (which should not be read without a stiff drink in hand,
I made this mistake so you don't have to): to request a window to be
withdrawn one should send a synthetic UnmapRequest event when iconified.
To request iconification one should just unmap the window. The ICCM
further recommends that the synthetic event should just be taken as a
cue to withdraw, to deal with legacy clients. Taking a hint from this,
rework xev_handle_unmaprequest to correctly detect these situations. A
Withdrawn window may come back anywhere, even as a subwindow of
something else, so the correct way to handle this state is to forget it
ever existed.
While i'm here, kill a dumb attempt to notice this in client_delete, and
nuke the very unnecessary arguments.
Todd confirmed this fixes the `race'.
ok todd@, ok ok okan@