XEphem/libXm/osx/Xm/TraversalI.h

309 lines
10 KiB
C

/*
* @OPENGROUP_COPYRIGHT@
* COPYRIGHT NOTICE
* Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
* Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group
* ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
* the full copyright text.
*
* This software is subject to an open license. It may only be
* used on, with or for operating systems which are themselves open
* source systems. You must contact The Open Group for a license
* allowing distribution and sublicensing of this software on, with,
* or for operating systems which are not Open Source programs.
*
* See http://www.opengroup.org/openmotif/license for full
* details of the license agreement. Any use, reproduction, or
* distribution of the program constitutes recipient's acceptance of
* this agreement.
*
* EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
* PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
* WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
* OR FITNESS FOR A PARTICULAR PURPOSE
*
* EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
* NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
* EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*/
/*
* 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 <Xm/XmP.h>
#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 */