|
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 */
|