XmeAddFocusChangeCallback — Registers a callback for focus changes
#include <Xm/VendorSEP.h>
void XmeAddFocusChangeCallback
(widget, callback_procedure, data);XmeAddFocusChangeCallback registers a callback_procedure to be called whenever there is a focus change to any widget in the widget tree managed by a specified VendorShell or subclass of VendorShell. This callback_procedure is called the focus change callback. Motif will not call the focus change callbacks when the VendorShell (or subclass) is in implicit mode. In explicit mode, Motif automatically calls the focus change callbacks whenever the user or the application attempts to change focus. Your focus change callback procedure has the option of accepting or rejecting the attempted focus change.
Registering a focus change callback can cause an entire application to run more slowly because the focus change callbacks might be called fairly frequently.
A focus change callback can be removed by calling XmeRemoveFocusChangeCallback.
widget | Specifies the widget whose children are to be monitored for focus changes. The specified widget must be a VendorShell or a subclass of VendorShell. | |
callback_procedure | Specifies the callback procedure to be called whenever there is a focus change. | |
data | Specifies the call data to be passed as the call_data argument to the callback procedure. |
Motif passes a pointer to an XmFocusMovedCallbackStruct to callback_procedure. When callback_procedure returns, Motif examines the cont field only.
typedef struct {
int reason ;
XEvent *event;
Boolean cont;
Widget old_focus;
Widget new_focus;
unsigned char focus_policy;
XmTraversalDirection direction;
} XmFocusMovedCallbackStruct; |
reason | Indicates why the callback was invoked. Motif always sets this field to XmCR_FOCUS_MOVED. | |
event | Points to the event that triggered the callback. | |
cont | Indicates whether an attempted focus change will be allowed or rejected. A focus change callback should set cont to True (the default) to permit the focus change. A focus change callback should set cont to False to reject the focus change. Therefore, if you set cont to False, Motif will ensure that the focus stays at widget old_focus. | |
old_focus | Indicates the widget ID of the widget that had keyboard focus immediately prior to the most recent traversal. | |
new_focus | Indicates the widget ID of the widget that has just gotten keyboard focus. | |
focus_policy | Indicates the VendorShell's keyboard focus policy; this will always be XmEXPLICIT since callback_procedure only gets called in explicit mode. | |
direction | Specifies the direction of the traversal. (See XmProcessTraversal(3) in the Motif Programmer's Referencefor details on possible values of the XmTraversalDirection enumerated type.) |