Hello,
I recently encountered a strange problem running an X/Motif 1.2
application under the Japanese OpenWindows running on Sparc Solaris
2.4.
The application handles property change events on the toplevel shell
widget. Under Japanese OpenWindows, it is losing property change
events. It captures property change events like this:
XtAddEventHandler(
toplevelShell, /* toplevel shell widget */
PropertyChangeMask, /* event of interest */
FALSE, /* maskable */
PropChangeHandler, /* event handler */
(XtPointer)pThis ); /* callback data */
PropChangeHandler is never getting called when the toplevelShell's
window properties change. I can run xprop in another window and spy
on toplevelShell's window to see the properties being changed, but
the application never sees these property change events. I have
tried changing FALSE to TRUE in the line above to make the events
non-maskable. This did not help. As xprop is an Xlib application
and it was detecting the property changes, I decided to try bypassing
Xt altogether and use Xlib to grab events for the window using
XSelectInput. The results were interesting. By doing this...
XSelectInput(
XtDisplay(toplevelShell),
XtWindow(toplevelShell),
PropertyChangeMask );
... and catching and dispatching events, all the property changes
were seen correctly and handled correctly. However, since only
property change events were being handled, the program behaved
"strangely." I tried adding the other event types that a toplevel
shell's window handles by default. In general, this caused the
property change events to be lost. The only combination that worked
was (PropertyChangeMask | StructureNotifyMask). But, again, this
does not catch all the events on the window that must be handled and
the program does not work correctly.
This application works correctly under the US/English version of
OpenWindows (and on many other X/Motif servers: MIT's, HP-9000, IBM
RS-6000, DEC, Linux, lots more...).
Has anyone seen a problem like this before? Is there a patch to the
Japanese version of OpenWindows that fixes it? Is there something
more the code needs to do to grab PropertyChange events?
Any help would be appreciated.
-Steve Mansour