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