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