Man Linux: Main Page and Category List

NAME

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

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_GROUP

          ·  XmEXCLUSIVE_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.

RELATED

       XmGetVisibility(3) and XmIsTraversable(3).

                                              XmProcessTraversal(library call)