Howdy Colin, glad to hear it's working 100%. The original problem was the endianness of Windoze 1-bit bitmap when using a non-32-bit wide destination. I think the code was writing into the unused portion of the 32-bits and you got garbage in the real mask part.
I found some kde apps on a linux box and did some peeking, it seems that not many register a small 16x16 icon, and that konqueror, for example, only gives a 16x16 icon in its _NET_WM_ICON property anyway. Very strange, maybe that _NET_ICON thing isn't commonplace? Things like KPAINT, KCALC, and KILLUSTRATOR (great name, the kill-ustrator) have big icons by default in WM_HINTS.
------------
Today I also got to test a fix for the missed ButtonRelease problem (dragging an Xterm scrollbar outside of its window and releasing the button does not tell Xterm it was released, leading to "interesting" problems). One thing I had to do that I don't like is to use a local copy of what the winmultiwindowwindow.c thinks is the button state. (i.e. LBUTTON=down, MBUTTON=up, RBUTTON=up) It did seem to work the entire day of hard use w/o any problems, but I have the suspicion that it might sometimes get out-of-sync w/the X server and send two ButtonReleases. That'd be better than the present situation but could still cause problems with pasting twice...
Is there a simple mi* or dix* call to get this info directly instead of keeping a cached copy? I did a grep but didn't find anything promising. You can't call XQueryPointer() since that's only legal for a client to do. I suppose I could post something to the WM thread but that's a real ugly kludge.
-Earle F. Philhower, III [EMAIL PROTECTED] cdrlabel - ZipLabel - FlpLabel http://www.cdrlabel.com