Blame lib/Xm/TraversalI.h

Packit b099d7
/* 
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
*/ 
Packit b099d7
/* 
Packit b099d7
 * HISTORY
Packit b099d7
*/ 
Packit b099d7
/*   $XConsortium: TraversalI.h /main/11 1995/07/13 18:16:58 drk $ */
Packit b099d7
/* (c) Copyright 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
Packit b099d7
#ifndef _XmTraversalI_h
Packit b099d7
#define _XmTraversalI_h
Packit b099d7
Packit b099d7
#include <Xm/XmP.h>
Packit b099d7
Packit b099d7
#ifdef __cplusplus
Packit b099d7
extern "C" {
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
#define NavigTypeIsTabGroup(navigation_type) \
Packit b099d7
  ((navigation_type == XmTAB_GROUP) || \
Packit b099d7
   (navigation_type == XmSTICKY_TAB_GROUP) || \
Packit b099d7
   (navigation_type == XmEXCLUSIVE_TAB_GROUP))
Packit b099d7
Packit b099d7
Packit b099d7
typedef enum {
Packit b099d7
    XmUnrelated,
Packit b099d7
    XmMyAncestor,
Packit b099d7
    XmMyDescendant,
Packit b099d7
    XmMyCousin,
Packit b099d7
    XmMySelf
Packit b099d7
} XmGeneology;
Packit b099d7
Packit b099d7
typedef struct _XmTravGraphRec
Packit b099d7
{   
Packit b099d7
    union _XmTraversalNodeRec *head ;
Packit b099d7
    Widget top ;
Packit b099d7
    union _XmTraversalNodeRec *current ;
Packit b099d7
    unsigned short num_entries ;
Packit b099d7
    unsigned short num_alloc ;
Packit b099d7
    unsigned short next_alloc ;
Packit b099d7
    unsigned short exclusive ;
Packit b099d7
    unsigned short tab_list_alloc ;
Packit b099d7
    unsigned short num_tab_list ;
Packit b099d7
    Widget *excl_tab_list ;
Packit b099d7
} XmTravGraphRec, * XmTravGraph ;
Packit b099d7
Packit b099d7
Packit b099d7
typedef struct _XmFocusDataRec {
Packit b099d7
    Widget	active_tab_group;
Packit b099d7
    Widget	focus_item;
Packit b099d7
    Widget	old_focus_item;
Packit b099d7
    Widget	pointer_item;
Packit b099d7
    Widget	old_pointer_item;
Packit b099d7
    Boolean	needToFlush;
Packit b099d7
    XCrossingEvent lastCrossingEvent;
Packit b099d7
    XmGeneology focalPoint;
Packit b099d7
    unsigned char focus_policy ; /* Mirrors focus_policy resource when focus */
Packit b099d7
    XmTravGraphRec trav_graph ;  /*   data retrieved using _XmGetFocusData().*/
Packit b099d7
    Widget      first_focus ;
Packit b099d7
} XmFocusDataRec ;
Packit b099d7
Packit b099d7
typedef enum
Packit b099d7
{
Packit b099d7
  XmTAB_GRAPH_NODE, XmTAB_NODE, XmCONTROL_GRAPH_NODE, XmCONTROL_NODE
Packit b099d7
} XmTravGraphNodeType ;
Packit b099d7
Packit b099d7
typedef union _XmDeferredGraphLink
Packit b099d7
{
Packit b099d7
  int offset ;
Packit b099d7
  struct _XmGraphNodeRec *link ;
Packit b099d7
} XmDeferredGraphLink ;
Packit b099d7
Packit b099d7
typedef struct _XmAnyNodeRec               /* Common */
Packit b099d7
{
Packit b099d7
  unsigned char type ;
Packit b099d7
  XmNavigationType nav_type ;
Packit b099d7
  XmDeferredGraphLink tab_parent ;
Packit b099d7
  Widget widget ;
Packit b099d7
  XRectangle rect ;
Packit b099d7
  union _XmTraversalNodeRec *next ;
Packit b099d7
  union _XmTraversalNodeRec *prev ;
Packit b099d7
} XmAnyNodeRec, *XmAnyNode ;
Packit b099d7
Packit b099d7
typedef struct _XmControlNodeRec
Packit b099d7
{
Packit b099d7
  XmAnyNodeRec any ;
Packit b099d7
  union _XmTraversalNodeRec *up ;
Packit b099d7
  union _XmTraversalNodeRec *down ;
Packit b099d7
} XmControlNodeRec, *XmControlNode ;
Packit b099d7
Packit b099d7
typedef struct _XmTabNodeRec
Packit b099d7
{
Packit b099d7
  XmAnyNodeRec any ;
Packit b099d7
} XmTabNodeRec, *XmTabNode ;
Packit b099d7
Packit b099d7
typedef struct _XmGraphNodeRec
Packit b099d7
{
Packit b099d7
  XmAnyNodeRec any ;
Packit b099d7
  union _XmTraversalNodeRec *sub_head ;
Packit b099d7
  union _XmTraversalNodeRec *sub_tail ;
Packit b099d7
} XmGraphNodeRec, *XmGraphNode ;
Packit b099d7
Packit b099d7
typedef union _XmTraversalNodeRec
Packit b099d7
{
Packit b099d7
  XmAnyNodeRec any ;
Packit b099d7
  XmControlNodeRec control ;
Packit b099d7
  XmTabNodeRec tab ;
Packit b099d7
  XmGraphNodeRec graph ;
Packit b099d7
} XmTraversalNodeRec, *XmTraversalNode ;
Packit b099d7
Packit b099d7
typedef struct
Packit b099d7
{
Packit b099d7
  XmTraversalNode *items;
Packit b099d7
  XmTraversalNode lead_item;
Packit b099d7
  Cardinal num_items;
Packit b099d7
  Cardinal max_items;
Packit b099d7
  Position min_hint;
Packit b099d7
  Position max_hint;
Packit b099d7
} XmTraversalRow;
Packit b099d7
Packit b099d7
Packit b099d7
/********    Private Function Declarations for Traversal.c    ********/
Packit b099d7
Packit b099d7
extern XmFocusData _XmCreateFocusData( void ) ;
Packit b099d7
extern void _XmDestroyFocusData( 
Packit b099d7
                        XmFocusData focusData) ;
Packit b099d7
extern void _XmSetActiveTabGroup( 
Packit b099d7
                        XmFocusData focusData,
Packit b099d7
                        Widget tabGroup) ;
Packit b099d7
extern Widget _XmGetActiveItem( 
Packit b099d7
                        Widget w) ;
Packit b099d7
extern void _XmNavigInitialize( 
Packit b099d7
                        Widget request,
Packit b099d7
                        Widget new_wid,
Packit b099d7
                        ArgList args,
Packit b099d7
                        Cardinal *num_args) ;
Packit b099d7
extern Boolean _XmNavigSetValues( 
Packit b099d7
                        Widget current,
Packit b099d7
                        Widget request,
Packit b099d7
                        Widget new_wid,
Packit b099d7
                        ArgList args,
Packit b099d7
                        Cardinal *num_args) ;
Packit b099d7
extern void _XmNavigResize( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern void _XmValidateFocus( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern void _XmNavigDestroy( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Boolean _XmCallFocusMoved( 
Packit b099d7
                        Widget old,
Packit b099d7
                        Widget new_wid,
Packit b099d7
                        XEvent *event) ;
Packit b099d7
extern Boolean _XmMgrTraversal( 
Packit b099d7
                        Widget wid,
Packit b099d7
                        XmTraversalDirection direction) ;
Packit b099d7
extern void _XmClearFocusPath( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Boolean _XmFocusIsHere( 
Packit b099d7
                        Widget w) ;
Packit b099d7
extern unsigned char _XmGetFocusPolicy( 
Packit b099d7
                        Widget w) ;
Packit b099d7
extern Widget _XmFindTopMostShell( 
Packit b099d7
                        Widget w) ;
Packit b099d7
extern void _XmFocusModelChanged( 
Packit b099d7
                        Widget wid,
Packit b099d7
                        XtPointer client_data,
Packit b099d7
                        XtPointer call_data) ;
Packit b099d7
extern XmFocusData _XmGetFocusData( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Boolean _XmComputeVisibilityRect( 
Packit b099d7
                        Widget w,
Packit b099d7
                        XRectangle *rectPtr,
Packit b099d7
			Boolean include_initial_border,
Packit b099d7
			Boolean allow_scrolling) ;
Packit b099d7
extern Boolean _XmGetPointVisibility(Widget w,
Packit b099d7
				     int root_x, 
Packit b099d7
				     int root_y);
Packit b099d7
extern void _XmSetRect( 
Packit b099d7
                        register XRectangle *rect,
Packit b099d7
                        Widget w) ;
Packit b099d7
extern int _XmIntersectRect( 
Packit b099d7
                        register XRectangle *srcRectA,
Packit b099d7
                        register Widget widget,
Packit b099d7
                        register XRectangle *dstRect) ;
Packit b099d7
extern int _XmEmptyRect( 
Packit b099d7
                        register XRectangle *r) ;
Packit b099d7
extern void _XmClearRect( 
Packit b099d7
                        register XRectangle *r) ;
Packit b099d7
extern Boolean _XmIsNavigable( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern void _XmWidgetFocusChange( 
Packit b099d7
                        Widget wid,
Packit b099d7
                        XmFocusChange change) ;
Packit b099d7
extern Widget _XmNavigate( 
Packit b099d7
                        Widget wid,
Packit b099d7
                        XmTraversalDirection direction) ;
Packit b099d7
extern void _XmSetInitialOfTabGroup( 
Packit b099d7
                        Widget tab_group,
Packit b099d7
                        Widget init_focus) ;
Packit b099d7
extern void _XmResetTravGraph( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Boolean _XmShellIsExclusive( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Widget _XmGetFirstFocus( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
Packit b099d7
/********    End Private Function Declarations    ********/
Packit b099d7
Packit b099d7
/********    Private Function Declarations for TraversalI.c    ********/
Packit b099d7
Packit b099d7
extern XmNavigability _XmGetNavigability( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Boolean _XmIsViewable( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Widget _XmIsScrollableClipWidget( 
Packit b099d7
                        Widget work_window,
Packit b099d7
			Boolean scrollable,
Packit b099d7
                        XRectangle *visRect) ;
Packit b099d7
extern Boolean _XmGetEffectiveView( 
Packit b099d7
                        Widget wid,
Packit b099d7
                        XRectangle *visRect) ;
Packit b099d7
extern Boolean _XmIntersectionOf( 
Packit b099d7
                        register XRectangle *srcRectA,
Packit b099d7
                        register XRectangle *srcRectB,
Packit b099d7
                        register XRectangle *destRect) ;
Packit b099d7
extern XmNavigationType _XmGetNavigationType( 
Packit b099d7
                        Widget widget) ;
Packit b099d7
extern Widget _XmGetActiveTabGroup( 
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Widget _XmTraverseAway( 
Packit b099d7
                        XmTravGraph list,
Packit b099d7
                        Widget wid,
Packit b099d7
#if NeedWidePrototypes
Packit b099d7
                        int wid_is_control) ;
Packit b099d7
#else
Packit b099d7
                        Boolean wid_is_control) ;
Packit b099d7
#endif /* NeedWidePrototypes */
Packit b099d7
extern Widget _XmTraverse( 
Packit b099d7
                        XmTravGraph list,
Packit b099d7
                        XmTraversalDirection action,
Packit b099d7
                        XmTraversalDirection *local_dir,
Packit b099d7
                        Widget reference_wid) ;
Packit b099d7
extern void _XmFreeTravGraph( 
Packit b099d7
                        XmTravGraph trav_list) ;
Packit b099d7
extern void _XmTravGraphRemove( 
Packit b099d7
                        XmTravGraph tgraph,
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern void _XmTravGraphAdd( 
Packit b099d7
                        XmTravGraph tgraph,
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern void _XmTravGraphUpdate( 
Packit b099d7
                        XmTravGraph tgraph,
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern Boolean _XmNewTravGraph( 
Packit b099d7
                        XmTravGraph trav_list,
Packit b099d7
                        Widget top_wid,
Packit b099d7
                        Widget init_current) ;
Packit b099d7
extern Boolean _XmSetInitialOfTabGraph( 
Packit b099d7
                        XmTravGraph trav_graph,
Packit b099d7
                        Widget tab_group,
Packit b099d7
                        Widget init_focus) ;
Packit b099d7
extern void _XmTabListAdd( 
Packit b099d7
                        XmTravGraph graph,
Packit b099d7
                        Widget wid) ;
Packit b099d7
extern void _XmTabListDelete( 
Packit b099d7
                        XmTravGraph graph,
Packit b099d7
                        Widget wid) ;
Packit b099d7
Packit b099d7
/********    End Private Function Declarations    ********/
Packit b099d7
Packit b099d7
Packit b099d7
#ifdef __cplusplus
Packit b099d7
}  /* Close scope of 'extern "C"' declaration which encloses file. */
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#endif /* _XmTraversalI_h */