[comp.windows.x] R3 vs R4 XGrabPointer and Saber-C user information

madd@world.std.com (jim frost) (02/25/90)

People using XGrabPointer who have noticed differences between r3 and
r4 should probably pay attention to this, as should users of Saber-C
versions 2.1.2 and earlier.

There are a number of differences in both the documentation and
behavior of the r3 and r4 XGrabPointer calls.  First, r3 documentation
says that any event allowed by XSelectInput is acceptable for
event_mask.  This is not so in r4, whose documentation says that only
pointer events are allowed.  A BadValue error is returned if you do
not pass a pointer event, even if "bc" mode is set.

To make life more interesting, the BadValue error is returned but
operation continues as it did in r3.  Thus if you ignore the error,
events specified by the event_mask -- even non-pointer events -- will
be propagated to the grab window just as they were with r3.

Lastly, the r4 documentation no longer says that the event mask to
XGrabPointer will be automatically augmented with ButtonPressMask and
ButtonReleaseMask as it was in r3; if you want those events, you
should explicitly specify them.  I neglected to test if the
augmentation still takes place, but better safe than sorry.

Saber-C users should be aware that the XGrabPointer behavior change is
what triggers spurious BadValue errors to be printed.  These errors
are benign and can safely be ignored.  Saber-C 3.0 (due to ship at the
end of April and looking great) will fix this problem for all
architectures and it has been fixed for the new Decstation port of
2.1.2 already.  If you have specific questions regarding Saber-C,
especially those regarding use with r4, please contact me via email.

jim frost
research and development
saber software
jimf@saber.com