XmProcessTraversal(3)

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_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(3)



Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.


Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.


Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.