Name

XmeAddFocusChangeCallback — Registers a callback for focus changes

Synopsis

#include <Xm/VendorSEP.h>
void XmeAddFocusChangeCallback(widget, callback_procedure, data);

DESCRIPTION

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.)

RELATED

XmeRemoveFocusChangeCallback(3).