
On Thu, Mar 29, 2007 at 06:35:48PM +1000, Chris Mears wrote:
I am not sure if defining _XSERVER64 is the right fix. The Xlib headers say that: [blah, blah]
You are absolutely correct. In retrospect, it seems more obvious.
An update: I turned off _XSERVER64 and my windows were properly managed again. However, an old bug returned: key modifiers are reported incorrectly. I have found the source of this error.
That is exactly the initial problem I was trying to solve.
The problem is that, in the KeyEvent data type, the "state" member has type "Mask" (64 bits). But in the C Xlib headers, the "state" member of the struct in unsigned int (32 bits)! This mucks everything up, in particular, the peek offsets.
The fix is to use CUInt instead of Modifier or Mask for that value. I have hacked up a patch, but I will need to clean it up before posting it here. It requires changes to X11 and X11-extras.
That was actually my first fix, but the other thing seemed more clever at the time. Please do send it to the list; The sooner that happens, the less likely people are to remember that my fixes caused additional problems. :)
So, now Xmonad appears to behave correctly.
Yay! It was working fine for me. Except for when I restarted it and
windows went missing, which I hadn't connected with my changes, as
I couldn't use it at all before I made them. :)
Thanks a bunch for digging into this some more.
This is why I love free software. I do a half-assed hack to make
something go, and then someone else comes along and fixes it to
make it work even better.
--
the Edward Blevins