[comp.windows.open-look] How to constrain input to a panel item in XView?

janet@bilby.cs.uwa.oz.au (Janet Jackson) (12/18/90)

I have an XView application with several panels.  I am looking for a way to
make "inactive" or "insensitive" (ie ignoring events) all the panel items
except for a given item of a given panel.  I _don't_ want to grab the server.
My "grab" should only affect my application, not anything else that's running.

Xt has a function XtAddGrab() that does what I want.  I suspect this is
possible because the Xt equivalent of panel items, at least when using
Athena widgets, are windows.  XView panel items are not.

The best way I can think of is to install event handlers (using
PANEL_EVENT_PROC) that ignore events for all the panels except the
given one, and install an event handler for the given panel (again using
PANEL_EVENT_PROC) that ignores events if the item is not the given one.
Then to remove my "grab" I just un-install the handlers.

I'm pretty sure this will do what I want, but it seems inelegant.  Can
anyone think of a better way?

Thanks in advance,

Janet Jackson
(janet@cs.uwa.oz.AU)
Department of Computer Science
The University of Western Australia