bionic (3) XmProcessTraversal.3.gz

Provided by: libmotif-dev_2.3.8-2build1_amd64 bug

NAME

       XmProcessTraversal  —  A  function that determines which component receives keyboard events when a widget
       has the focus "XmProcessTraversal"

SYNOPSIS

       #include <Xm/Xm.h>
       Boolean XmProcessTraversal(
       Widget widget,
       XmTraversalDirection direction);

DESCRIPTION

       XmProcessTraversal determines which component of a hierarchy receives keyboard events when the  hierarchy
       that contains the given widget has keyboard focus.

       XmProcessTraversal changes focus only when the keyboard focus policy of the widget hierarchy is explicit.
       If the XmNkeyboardFocusPolicy of the nearest shell ancestor  of  the  given  widget  is  not  XmEXPLICIT,
       XmProcessTraversal returns False without making any focus changes.

       widget    Specifies the widget ID of the widget whose hierarchy is to be traversed

       direction Specifies the direction of traversal

   DEFINITIONS
       In  order to be eligible to receive keyboard focus when the shell's XmNkeyboardFocusPolicy is XmEXPLICIT,
       a widget or gadget must meet the following conditions:

          •  The widget and its ancestors are not in the process of being destroyed.

          •  The widget and its ancestors are sensitive.  A  widget  is  sensitive  when  its  XmNsensitive  and
             XmNancestorSensitive resources are both True.

          •  The XmNtraversalOn resource for the widget and its ancestors is True.

          •  The  widget  is  viewable.  This means that the widget and its ancestors are managed, realized, and
             (except for gadgets) mapped.  Furthermore, in general, some part of the widget's  rectangular  area
             must  be  unobscured  by  the  widget's  ancestors.  If an application unmaps a widget that has its
             XmNmappedWhenManaged resource set to True, the result is undefined.

                 In a ScrolledWindow with an XmNscrollingPolicy  of  XmAUTOMATIC,  a  widget  that  is  obscured
                 because  it  is  not  within  the  clip window may be able to receive focus if some part of the
                 widget is within the work area and if  an  XmNtraverseObscuredCallback  routine  can  make  the
                 widget at least partially visible by scrolling the window.

       In  general  only  primitives,  gadgets,  and  Drawing Area are eligible to receive focus.  Most managers
       cannot receive focus even if they meet all these conditions.

       The direction argument identifies the kind of traversal  action  to  take.   The  descriptions  of  these
       actions below refer to traversable non-tab-group widgets and traversable tab groups.

          •  A  traversable  non-tab-group  widget  is  a  widget that is not a tab group and that meets all the
             conditions for receiving focus described above.

          •  A traversable tab group widget is a tab group widget that meets the same conditions, except that  a
             manager  that  is a tab group and meets the other conditions is also eligible for traversal as long
             as it contains a descendant that can receive focus.

       A tab group is a widget whose XmNnavigationType is:

          •  XmTAB_GROUP or XmSTICKY_TAB_GROUP, if the  hierarchy  (up  to  the  nearest  shell  ancestor)  that
             contains the widget has no widget whose XmNnavigationType is XmEXCLUSIVE_TAB_GROUPXmEXCLUSIVE_TAB_GROUP  or  XmSTICKY_TAB_GROUP,  if the hierarchy (up to the nearest shell ancestor)
             that contains the widget has any widget whose XmNnavigationType is XmEXCLUSIVE_TAB_GROUP

   TRAVERSAL ACTIONS
       The hierarchy to be traversed is that containing the widget argument.  This hierarchy is  traversed  only
       up  to the nearest shell; XmProcessTraversal does not move focus from one shell to another.  If the shell
       containing widget does not currently have the focus, any change  that  XmProcessTraversal  makes  to  the
       element with focus within that shell does not take effect until the next time the shell receives focus.

       XmProcessTraversal  begins  the  traversal  action  from  the  widget in the hierarchy that currently has
       keyboard focus or that last had focus when the user traversed away from the shell hierarchy.

       The value of the direction argument determines which of three kinds of traversal action to take:

          •  Traversal to a non-tab-group widget.  This kind of traversal is possible only when the widget  that
             currently  has  focus  is  not  a  tab group; otherwise, XmProcessTraversal returns False for these
             actions.

                 These actions do not move focus from one tab group to another.  The actions first determine the
                 containing  tab  group.   This is the tab group containing the widget that currently has focus.
                 The actions traverse only to a non-tab-group widget within the containing tab group.

                 A non-tab-group widget is eligible for this kind of traversal if the widget is traversable  and
                 has  no  tab  group  ancestors  up  to  the containing tab group.  If the tab group contains no
                 traversable non-tab-group widgets, XmProcessTraversal returns False.

                 Following are the possible values of the direction argument.   Note  that  when  actions  wrap,
                 wrapping  occurs  in the traversal direction. The following describes what happens in a left to
                 right environment:

                    •  XmTRAVERSE_RIGHT—If  the  XmNnavigationType  of  the  containing   tab   group   is   not
                       XmEXCLUSIVE_TAB_GROUP,  focus  moves  to the next traversable non-tab-group widget to the
                       right of the widget that currently has focus.  In a left to  right  environment,  at  the
                       right  side  of  the  tab group this action wraps to the non-tab-group widget at the left
                       side and next toward the bottom.  At the rightmost widget in the bottom row  of  the  tab
                       group  this  action wraps to the non-tab-group widget at the leftmost widget in the upper
                       row.

                           In a right to left environment, at the right side of the tab group, this action wraps
                           to  the  non-tab-group  widget  at  the  left  side  and  next toward the top. At the
                           rightmost widget in the upper row of the tab group this action wraps to the  non-tab-
                           group widget at the leftmost widget in the bottom row.

                           If  the XmNnavigationType of the containing tab group is XmEXCLUSIVE_TAB_GROUP, focus
                           moves to the next traversable non-tab-group widget in the tab  group,  proceeding  in
                           the order in which the widgets appear in their parents' XmNchildren lists.  After the
                           last widget in the tab group, this action wraps to the first non-tab-group widget.

                    •  XmTRAVERSE_LEFT—If  the  XmNnavigationType  of  the   containing   tab   group   is   not
                       XmEXCLUSIVE_TAB_GROUP,  focus  moves  to the next traversable non-tab-group widget to the
                       left of the widget that currently has focus.  In a left to right environment, at the left
                       side of the tab group this action wraps to the non-tab-group widget at the right side and
                       next toward the top.  At the leftmost widget in the upper  row  of  the  tab  group  this
                       action wraps to the non-tab-group widget at the rightmost widget in the bottom row.

                           In  a  right to left environment, at the left side of the tab group this action wraps
                           to the non-tab-group widget at the right side and next  toward  the  bottom.  At  the
                           leftmost  widget in the bottom row of the tab group this action wraps to the non-tab-
                           group widget at the rightmost widget in the upper row.

                           If the XmNnavigationType of the containing tab group is XmEXCLUSIVE_TAB_GROUP,  focus
                           moves  to  the previous traversable non-tab-group widget in the tab group, proceeding
                           in the reverse order in which the widgets appear in their parents' XmNchildren lists.
                           After  the first widget in the tab group, this action wraps to the last non-tab-group
                           widget.

                    •  XmTRAVERSE_DOWN—If  the  XmNnavigationType  of  the   containing   tab   group   is   not
                       XmEXCLUSIVE_TAB_GROUP, focus moves to the next traversable non-tab-group widget below the
                       widget that currently has focus.  In a left to right environment, at the  bottom  of  the
                       tab  group  this  action wraps to the non-tab-group widget at the top and next toward the
                       right.  At the bottom widget in the rightmost column of the tab group this  action  wraps
                       to the non-tab-group widget at the top widget in the leftmost column.

                           In  a  right to left environment, at the bottom of the tab group this action wraps to
                           the non-tab-group widget at the top and next toward the left. At the bottom widget of
                           the leftmost widget of the tab group this action wraps to the non-tab-group widget at
                           the top widget of the rightmost column.

                           If the XmNnavigationType of the containing tab group is XmEXCLUSIVE_TAB_GROUP,  focus
                           moves  to  the  next traversable non-tab-group widget in the tab group, proceeding in
                           the order in which the widgets appear in their parents' XmNchildren lists.  After the
                           last widget in the tab group, this action wraps to the first non-tab-group widget.

                    •  XmTRAVERSE_UP—If   the   XmNnavigationType   of   the   containing   tab   group  is  not
                       XmEXCLUSIVE_TAB_GROUP, focus moves to the next traversable non-tab-group widget above the
                       widget  that  currently has focus.  In a left to right environment, at the top of the tab
                       group this action wraps to the non-tab-group widget at the bottom  and  next  toward  the
                       left.  At the top widget of the leftmost column of the tab group this action wraps to the
                       non-tab-group widget at the bottom widget of the rightmost column.

                           In a right to left environment, at the top of the tab group this action wraps to  the
                           non-tab-group  widget  at  the bottom and next toward the right. At the top widget of
                           the right most column of the tab group this action wraps to the non-tab-group  widget
                           at the bottom widget of the leftmost column.

                           If  the XmNnavigationType of the containing tab group is XmEXCLUSIVE_TAB_GROUP, focus
                           moves to the previous traversable non-tab-group widget in the tab  group,  proceeding
                           in the reverse order in which the widgets appear in their parents' XmNchildren lists.
                           After the first widget in the tab group, this action wraps to the last  non-tab-group
                           widget.

                    •  XmTRAVERSE_NEXT—Focus  moves  to  the  next  traversable  non-tab-group widget in the tab
                       group, proceeding in the order in which the widgets appear in their parents'  XmNchildren
                       lists.   After  the last widget in the tab group, this action wraps to the first non-tab-
                       group widget.

                    •  XmTRAVERSE_PREV—Focus moves to the previous traversable non-tab-group widget in  the  tab
                       group,  proceeding  in  the  reverse  order in which the widgets appear in their parents'
                       XmNchildren lists.  After the first widget in the tab group, this  action  wraps  to  the
                       last non-tab-group widget.

                    •  XmTRAVERSE_HOME—If   the   XmNnavigationType   of   the   containing  tab  group  is  not
                       XmEXCLUSIVE_TAB_GROUP, focus moves to the first traversable non-tab-group widget  at  the
                       initial focus of the tab group.

                           If  the XmNnavigationType of the containing tab group is XmEXCLUSIVE_TAB_GROUP, focus
                           moves to the first traversable non-tab-group widget in the tab  group,  according  to
                           the order in which the widgets appear in their parents' XmNchildren lists.

          •  Traversal  to  a  tab  group.   These  actions first determine the current widget hierarchy and the
             containing tab group.  The current widget hierarchy is the  widget  hierarchy  whose  root  is  the
             nearest  shell ancestor of the widget that currently has focus.  The containing tab group is is the
             tab group containing the widget that currently has focus.  If the current widget hierarchy contains
             no traversable tab groups, XmProcessTraversal returns False.

                 Following  are  the  possible values of the direction argument. If any tab group in the current
                 widget hierarchy has an XmNnavigationType of XmEXCLUSIVE_TAB_GROUP, traversal of tab groups  in
                 the  hierarchy proceeds to widgets in the order in which their XmNnavigationType resources were
                 specified as XmEXCLUSIVE_TAB_GROUP or XmSTICKY_TAB_GROUP.:

                    •  XmTRAVERSE_NEXT_TAB_GROUP—Finds the hierarchy that contains widget, finds the active  tab
                       group (if any), and makes the next tab group the active tab group in the hierarchy.

                    •  XmTRAVERSE_PREV_TAB_GROUP—Finds  the hierarchy that contains widget, finds the active tab
                       group (if any), and makes the previous tab group the active tab group in the hierarchy.

          •  Traversal  to  any  widget.   In  this  case  the  widget  argument  is   the   widget   to   which
             XmProcessTraversal  tries  to  give  focus.   If  the widget is not traversable, XmProcessTraversal
             returns False.

                 Following are the possible values of the direction argument:

                    •  XmTRAVERSE_CURRENT—Finds the hierarchy and the tab group that contain  widget.   If  this
                       tab  group  is  not  the active tab group, this action makes it the active tab group.  If
                       widget is an item in the active tab group, this action makes  it  the  active  item.   If
                       widget  is  the active tab group, this action makes the first traversable item in the tab
                       group the active item.

   CAUTIONS
       Using XmProcessTraversal to traverse to MenuBars, Pulldown  menu  panes,  or  Popup  menu  panes  is  not
       supported.

       XmProcessTraversal  cannot be called recursively.  In particular, an application cannot call this routine
       from an XmNfocusCallback or XmNlosingFocusCallback procedure.

RETURN

       Returns True if the traversal action succeeded.  Returns  False  if  the  XmNkeyboardFocusPolicy  of  the
       nearest  shell  ancestor of widget is not XmEXPLICIT, if the traversal action finds no traversable widget
       to receive focus, or if the call to the routine has invalid arguments.

       XmGetVisibility(3) and XmIsTraversable(3).

                                                                                           XmProcessTraversal(3)