The X Toolkit allows applications to catch low level X events
occurring in a window owned by a widget. This can be accomplished with
a call to xtAddEventHandler/5
. This predicate is exactly like the
corresponding X Toolkit function, therefore refer to the Xt manual for
more information about it. Note that the event mask is represented as
a list of event names in ProXT. There is also the
xtAddRawEventHandler/5
predicate, which is almost the same as
xtAddEventHandler/5
except that it does not affect the widget's
event mask. To remove an event handler use
xtAddRawEventHandler/5
or xtAddRawEventHandler/5
accordingly.
Following is the first example rewritten in order to utilize event handlers.
create_button :- xtAppInitialize(App,'Demo',[],Shell), xmCreatePushButton(Shell,push_button, [xmNwidth(100), xmNheight(100)],Button), xtManageChild(Button), xtAddEventHandler(Button,[buttonPressMask],false, pressed,'Hello Quintus!'), xtRealizeWidget(Shell), xtAppMainLoop(App). pressed(Widget, ClientData, CallData) :- write(Widget), nl, write(ClientData), nl, write(CallData), nl.