Developer's Toolkit Release Notes for HP-UX 11i

72 Chapter 3
Known Problems and Bugs
Application Conflicts With DtHelp Searches
Application Conflicts With DtHelp Searches
The following information only applies if you are not using
Xt[App]MainLoop() to process all events for an application.
There may be an architectural conflict if an application uses
Xt[App]PeekEvent() and Xt[App]ProcessEvent() to process X events.
If the application calls Xt[App]ProceesEvent() only when
Xt[App]PeekEvent() returns true, a DtHelp index search will never
complete.
A work procedure is registered when the user selects the Index button in
a General Help Dialog. In effect, the ’search’ occurs only when the
application is not busy doing something else. If Xt[App]ProcessEvent()
is called only when there is an X event, it (the X event) takes precedence
over any work procedure registered.
Therefore the Search work procedure is never called/completed.
The best way around this is to use Xt[App]MainLoop() to do your event
processing.
If you cannot do this, then register your own work procedure before
creating any help dialogs. The work procedure can be very simple (a
return FALSE) or do the work you want to do if there is no other X event
or work procedure pending. Therefore, when a search occurs, its work
procedure will take precedence over your work procedure and X events
will take precedence over all.
The key is to always call Xt[App]ProcessEvent() so that the search
work procedure will occur. If no search is in progress, your work
procedure will occur, causing the Xt[App]ProcessEvent() to not block.