/* * bltBind.h -- * * Copyright 1993-1998 Lucent Technologies, Inc. * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby * granted, provided that the above copyright notice appear in all * copies and that both that the copyright notice and warranty * disclaimer appear in supporting documentation, and that the names * of Lucent Technologies any of their entities not be used in * advertising or publicity pertaining to distribution of the software * without specific, written prior permission. * * Lucent Technologies disclaims all warranties with regard to this * software, including all implied warranties of merchantability and * fitness. In no event shall Lucent Technologies be liable for any * special, indirect or consequential damages or any damages * whatsoever resulting from loss of use, data or profits, whether in * an action of contract, negligence or other tortuous action, arising * out of or in connection with the use or performance of this * software. */ #ifndef _BLT_BIND_H #define _BLT_BIND_H #include typedef struct Blt_BindTableStruct *Blt_BindTable; typedef ClientData (Blt_BindPickProc) _ANSI_ARGS_((ClientData clientData, int x, int y, ClientData *contextPtr)); typedef void (Blt_BindTagProc) _ANSI_ARGS_((Blt_BindTable bindTable, ClientData object, ClientData context, Blt_List list)); /* * Binding structure information: */ struct Blt_BindTableStruct { unsigned int flags; Tk_BindingTable bindingTable; /* Table of all bindings currently defined. * NULL means that no bindings exist, so the * table hasn't been created. Each "object" * used for this table is either a Tk_Uid for * a tag or the address of an item named by * id. */ ClientData currentItem; /* The item currently containing the mouse * pointer, or NULL if none. */ ClientData currentContext; /* One word indicating what kind of object * was picked. */ ClientData newItem; /* The item that is about to become the * current one, or NULL. This field is * used to detect deletions of the new * current item pointer that occur during * Leave processing of the previous current * tab. */ ClientData newContext; /* One-word indicating what kind of object * was just picked. */ ClientData focusItem; ClientData focusContext; XEvent pickEvent; /* The event upon which the current choice * of the current tab is based. Must be saved * so that if the current item is deleted, * we can pick another. */ int activePick; /* The pick event has been initialized so * that we can repick it */ int state; /* Last known modifier state. Used to * defer picking a new current object * while buttons are down. */ ClientData clientData; Tk_Window tkwin; Blt_BindPickProc *pickProc; /* Routine to report the item the mouse is * currently over. */ Blt_BindTagProc *tagProc; /* Routine to report tags picked items. */ Tcl_Interp *interp; }; EXTERN void Blt_DestroyBindingTable _ANSI_ARGS_((Blt_BindTable table)); EXTERN Blt_BindTable Blt_CreateBindingTable _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, ClientData clientData, Blt_BindPickProc *pickProc, Blt_BindTagProc *tagProc)); EXTERN int Blt_ConfigureBindings _ANSI_ARGS_((Tcl_Interp *interp, Blt_BindTable table, ClientData item, int argc, char **argv)); #if (TCL_MAJOR_VERSION >= 8) EXTERN int Blt_ConfigureBindingsFromObj _ANSI_ARGS_((Tcl_Interp *interp, Blt_BindTable table, ClientData item, int objc, Tcl_Obj *CONST *objv)); #endif EXTERN void Blt_PickCurrentItem _ANSI_ARGS_((Blt_BindTable table)); EXTERN void Blt_DeleteBindings _ANSI_ARGS_((Blt_BindTable table, ClientData object)); EXTERN void Blt_MoveBindingTable _ANSI_ARGS_((Blt_BindTable table, Tk_Window tkwin)); #define Blt_SetFocusItem(bindPtr, object, context) \ ((bindPtr)->focusItem = (ClientData)(object),\ (bindPtr)->focusContext = (ClientData)(context)) #define Blt_SetCurrentItem(bindPtr, object, context) \ ((bindPtr)->currentItem = (ClientData)(object),\ (bindPtr)->currentContext = (ClientData)(context)) #define Blt_GetCurrentItem(bindPtr) ((bindPtr)->currentItem) #define Blt_GetCurrentContext(bindPtr) ((bindPtr)->currentContext) #define Blt_GetLatestItem(bindPtr) ((bindPtr)->newItem) #define Blt_GetBindingData(bindPtr) ((bindPtr)->clientData) #endif /*_BLT_BIND_H*/