/[dtapublic]/projs/emts/trunk/src/c_tk_base_7_5_w_mods/tkint.h
ViewVC logotype

Diff of /projs/emts/trunk/src/c_tk_base_7_5_w_mods/tkint.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

projs/trunk/shared_source/c_tk_base_7_5_w_mods/tkint.h revision 44 by dashley, Fri Oct 14 02:09:58 2016 UTC projs/ets/trunk/src/c_tk_base_7_5_w_mods/tkint.h revision 220 by dashley, Sun Jul 22 15:58:07 2018 UTC
# Line 1  Line 1 
 /* $Header: /cvsroot/esrg/sfesrg/esrgpcpj/shared/tk_base/tkint.h,v 1.1.1.1 2001/06/13 05:03:44 dtashley Exp $ */  
   
 /*  
  * tkInt.h --  
  *  
  *      Declarations for things used internally by the Tk  
  *      procedures but not exported outside the module.  
  *  
  * Copyright (c) 1990-1994 The Regents of the University of California.  
  * Copyright (c) 1994-1997 Sun Microsystems, Inc.  
  * Copyright (c) 1998 by Scriptics Corporation.  
  *  
  * See the file "license.terms" for information on usage and redistribution  
  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.  
  *  
  * RCS: $Id: tkint.h,v 1.1.1.1 2001/06/13 05:03:44 dtashley Exp $  
  */  
   
 #ifndef _TKINT  
 #define _TKINT  
   
 #ifndef _TK  
 #include "tk.h"  
 #endif  
 #ifndef _TCL  
 #include "tcl.h"  
 #endif  
 #ifndef _TKPORT  
 #include "tkPort.h"  
 #endif  
   
 /*  
  * Opaque type declarations:  
  */  
   
 typedef struct TkColormap TkColormap;  
 typedef struct TkGrabEvent TkGrabEvent;  
 typedef struct TkpCursor_ *TkpCursor;  
 typedef struct TkRegion_ *TkRegion;  
 typedef struct TkStressedCmap TkStressedCmap;  
 typedef struct TkBindInfo_ *TkBindInfo;  
   
 /*  
  * Procedure types.  
  */  
   
 typedef int (TkBindEvalProc) _ANSI_ARGS_((ClientData clientData,  
         Tcl_Interp *interp, XEvent *eventPtr, Tk_Window tkwin,  
         KeySym keySym));  
 typedef void (TkBindFreeProc) _ANSI_ARGS_((ClientData clientData));  
 typedef Window (TkClassCreateProc) _ANSI_ARGS_((Tk_Window tkwin,  
         Window parent, ClientData instanceData));  
 typedef void (TkClassGeometryProc) _ANSI_ARGS_((ClientData instanceData));  
 typedef void (TkClassModalProc) _ANSI_ARGS_((Tk_Window tkwin,  
         XEvent *eventPtr));  
   
   
 /*  
  * Widget class procedures used to implement platform specific widget  
  * behavior.  
  */  
   
 typedef struct TkClassProcs {  
     TkClassCreateProc *createProc;  
                                 /* Procedure to invoke when the  
                                    platform-dependent window needs to be  
                                    created. */  
     TkClassGeometryProc *geometryProc;  
                                 /* Procedure to invoke when the geometry of a  
                                    window needs to be recalculated as a result  
                                    of some change in the system. */  
     TkClassModalProc *modalProc;  
                                 /* Procedure to invoke after all bindings on a  
                                    widget have been triggered in order to  
                                    handle a modal loop. */  
 } TkClassProcs;  
   
 /*  
  * One of the following structures is maintained for each cursor in  
  * use in the system.  This structure is used by tkCursor.c and the  
  * various system specific cursor files.  
  */  
   
 typedef struct TkCursor {  
     Tk_Cursor cursor;           /* System specific identifier for cursor. */  
     Display *display;           /* Display containing cursor. Needed for  
                                  * disposal and retrieval of cursors. */  
     int resourceRefCount;       /* Number of active uses of this cursor (each  
                                  * active use corresponds to a call to  
                                  * Tk_AllocPreserveFromObj or Tk_Preserve).  
                                  * If this count is 0, then this structure  
                                  * is no longer valid and it isn't present  
                                  * in a hash table: it is being kept around  
                                  * only because there are objects referring  
                                  * to it.  The structure is freed when  
                                  * resourceRefCount and objRefCount are  
                                  * both 0. */  
     int objRefCount;            /* Number of Tcl objects that reference  
                                  * this structure.. */  
     Tcl_HashTable *otherTable;  /* Second table (other than idTable) used  
                                  * to index this entry. */  
     Tcl_HashEntry *hashPtr;     /* Entry in otherTable for this structure  
                                  * (needed when deleting). */  
     Tcl_HashEntry *idHashPtr;   /* Entry in idTable for this structure  
                                  * (needed when deleting). */  
     struct TkCursor *nextPtr;   /* Points to the next TkCursor structure with  
                                  * the same name.  Cursors with the same  
                                  * name but different displays are chained  
                                  * together off a single hash table entry. */  
 } TkCursor;  
   
 /*  
  * One of the following structures is maintained for each display  
  * containing a window managed by Tk.  In part, the structure is  
  * used to store thread-specific data, since each thread will have  
  * its own TkDisplay structure.  
  */  
   
 typedef struct TkDisplay {  
     Display *display;           /* Xlib's info about display. */  
     struct TkDisplay *nextPtr;  /* Next in list of all displays. */  
     char *name;                 /* Name of display (with any screen  
                                  * identifier removed).  Malloc-ed. */  
     Time lastEventTime;         /* Time of last event received for this  
                                  * display. */  
   
     /*  
      * Information used primarily by tk3d.c:  
      */  
   
     int borderInit;             /* 0 means borderTable needs initializing. */  
     Tcl_HashTable borderTable;  /* Maps from color name to TkBorder  
                                  * structure. */  
   
     /*  
      * Information used by tkAtom.c only:  
      */  
   
     int atomInit;               /* 0 means stuff below hasn't been  
                                  * initialized yet. */  
     Tcl_HashTable nameTable;    /* Maps from names to Atom's. */  
     Tcl_HashTable atomTable;    /* Maps from Atom's back to names. */  
   
     /*  
      * Information used primarily by tkBind.c:  
      */  
   
     int bindInfoStale;          /* Non-zero means the variables in this  
                                  * part of the structure are potentially  
                                  * incorrect and should be recomputed. */  
     unsigned int modeModMask;   /* Has one bit set to indicate the modifier  
                                  * corresponding to "mode shift".  If no  
                                  * such modifier, than this is zero. */  
     unsigned int metaModMask;   /* Has one bit set to indicate the modifier  
                                  * corresponding to the "Meta" key.  If no  
                                  * such modifier, then this is zero. */  
     unsigned int altModMask;    /* Has one bit set to indicate the modifier  
                                  * corresponding to the "Meta" key.  If no  
                                  * such modifier, then this is zero. */  
     enum {LU_IGNORE, LU_CAPS, LU_SHIFT} lockUsage;  
                                 /* Indicates how to interpret lock modifier. */  
     int numModKeyCodes;         /* Number of entries in modKeyCodes array  
                                  * below. */  
     KeyCode *modKeyCodes;       /* Pointer to an array giving keycodes for  
                                  * all of the keys that have modifiers  
                                  * associated with them.  Malloc'ed, but  
                                  * may be NULL. */  
   
     /*  
      * Information used by tkBitmap.c only:  
      */  
     
     int bitmapInit;             /* 0 means tables above need initializing. */  
     int bitmapAutoNumber;       /* Used to number bitmaps. */  
     Tcl_HashTable bitmapNameTable;      
                                 /* Maps from name of bitmap to the first  
                                  * TkBitmap record for that name. */  
     Tcl_HashTable bitmapIdTable;/* Maps from bitmap id to the TkBitmap  
                                  * structure for the bitmap. */  
     Tcl_HashTable bitmapDataTable;      
                                 /* Used by Tk_GetBitmapFromData to map from  
                                  * a collection of in-core data about a  
                                  * bitmap to a reference giving an auto-  
                                  * matically-generated name for the bitmap. */  
   
     /*  
      * Information used by tkCanvas.c only:  
      */  
   
     int numIdSearches;            
     int numSlowSearches;  
   
     /*  
      * Used by tkColor.c only:  
      */  
   
     int colorInit;              /* 0 means color module needs initializing. */  
     TkStressedCmap *stressPtr;  /* First in list of colormaps that have  
                                  * filled up, so we have to pick an  
                                  * approximate color. */  
     Tcl_HashTable colorNameTable;  
                                 /* Maps from color name to TkColor structure  
                                  * for that color. */  
     Tcl_HashTable colorValueTable;  
                                 /* Maps from integer RGB values to TkColor  
                                  * structures. */  
   
     /*  
      * Used by tkCursor.c only:  
      */  
   
     int cursorInit;             /* 0 means cursor module need initializing. */  
     Tcl_HashTable cursorNameTable;  
                                 /* Maps from a string name to a cursor to the  
                                  * TkCursor record for the cursor. */  
     Tcl_HashTable cursorDataTable;  
                                 /* Maps from a collection of in-core data  
                                  * about a cursor to a TkCursor structure. */  
     Tcl_HashTable cursorIdTable;  
                                 /* Maps from a cursor id to the TkCursor  
                                  * structure for the cursor. */  
     char cursorString[20];      /* Used to store a cursor id string. */  
     Font cursorFont;            /* Font to use for standard cursors.  
                                  * None means font not loaded yet. */  
   
     /*  
      * Information used by tkError.c only:  
      */  
   
     struct TkErrorHandler *errorPtr;  
                                 /* First in list of error handlers  
                                  * for this display.  NULL means  
                                  * no handlers exist at present. */  
     int deleteCount;            /* Counts # of handlers deleted since  
                                  * last time inactive handlers were  
                                  * garbage-collected.  When this number  
                                  * gets big, handlers get cleaned up. */  
   
     /*  
      * Used by tkEvent.c only:  
      */  
   
     struct TkWindowEvent *delayedMotionPtr;  
                                 /* Points to a malloc-ed motion event  
                                  * whose processing has been delayed in  
                                  * the hopes that another motion event  
                                  * will come along right away and we can  
                                  * merge the two of them together.  NULL  
                                  * means that there is no delayed motion  
                                  * event. */  
   
     /*  
      * Information used by tkFocus.c only:  
      */  
   
     int focusDebug;             /* 1 means collect focus debugging  
                                  * statistics. */  
     struct TkWindow *implicitWinPtr;  
                                 /* If the focus arrived at a toplevel window  
                                  * implicitly via an Enter event (rather  
                                  * than via a FocusIn event), this points  
                                  * to the toplevel window.  Otherwise it is  
                                  * NULL. */  
     struct TkWindow *focusPtr;  /* Points to the window on this display that  
                                  * should be receiving keyboard events.  When  
                                  * multiple applications on the display have  
                                  * the focus, this will refer to the  
                                  * innermost window in the innermost  
                                  * application.  This information isn't used  
                                  * under Unix or Windows, but it's needed on  
                                  * the Macintosh. */  
   
     /*  
      * Information used by tkGC.c only:  
      */  
       
     Tcl_HashTable gcValueTable; /* Maps from a GC's values to a TkGC structure  
                                  * describing a GC with those values. */  
     Tcl_HashTable gcIdTable;    /* Maps from a GC to a TkGC. */  
     int gcInit;                 /* 0 means the tables below need  
                                  * initializing. */  
   
     /*  
      * Information used by tkGeometry.c only:  
      */  
   
     Tcl_HashTable maintainHashTable;  
                                 /* Hash table that maps from a master's  
                                  * Tk_Window token to a list of slaves  
                                  * managed by that master. */  
     int geomInit;      
   
     /*  
      * Information used by tkGet.c only:  
      */  
     
     Tcl_HashTable uidTable;     /* Stores all Tk_Uid  used in a thread. */  
     int uidInit;                /* 0 means uidTable needs initializing. */  
   
     /*  
      * Information used by tkGrab.c only:  
      */  
   
     struct TkWindow *grabWinPtr;  
                                 /* Window in which the pointer is currently  
                                  * grabbed, or NULL if none. */  
     struct TkWindow *eventualGrabWinPtr;  
                                 /* Value that grabWinPtr will have once the  
                                  * grab event queue (below) has been  
                                  * completely emptied. */  
     struct TkWindow *buttonWinPtr;  
                                 /* Window in which first mouse button was  
                                  * pressed while grab was in effect, or NULL  
                                  * if no such press in effect. */  
     struct TkWindow *serverWinPtr;  
                                 /* If no application contains the pointer then  
                                  * this is NULL.  Otherwise it contains the  
                                  * last window for which we've gotten an  
                                  * Enter or Leave event from the server (i.e.  
                                  * the last window known to have contained  
                                  * the pointer).  Doesn't reflect events  
                                  * that were synthesized in tkGrab.c. */  
     TkGrabEvent *firstGrabEventPtr;  
                                 /* First in list of enter/leave events  
                                  * synthesized by grab code.  These events  
                                  * must be processed in order before any other  
                                  * events are processed.  NULL means no such  
                                  * events. */  
     TkGrabEvent *lastGrabEventPtr;  
                                 /* Last in list of synthesized events, or NULL  
                                  * if list is empty. */  
     int grabFlags;              /* Miscellaneous flag values.  See definitions  
                                  * in tkGrab.c. */  
   
     /*  
      * Information used by tkGrid.c only:  
      */  
   
     int gridInit;               /* 0 means table below needs initializing. */  
     Tcl_HashTable gridHashTable;/* Maps from Tk_Window tokens to  
                                  * corresponding Grid structures. */  
   
     /*  
      * Information used by tkImage.c only:  
      */  
   
     int imageId;                /* Value used to number image ids. */  
   
     /*  
      * Information used by tkMacWinMenu.c only:  
      */  
   
     int postCommandGeneration;    
   
     /*  
      * Information used by tkOption.c only.  
      */  
   
   
   
     /*  
      * Information used by tkPack.c only.  
      */  
   
     int packInit;              /* 0 means table below needs initializing. */  
     Tcl_HashTable packerHashTable;  
                                /* Maps from Tk_Window tokens to  
                                 * corresponding Packer structures. */  
       
   
     /*  
      * Information used by tkPlace.c only.  
      */  
   
     int placeInit;              /* 0 means tables below need initializing. */  
     Tcl_HashTable masterTable;  /* Maps from Tk_Window toke to the Master  
                                  * structure for the window, if it exists. */  
     Tcl_HashTable slaveTable;   /* Maps from Tk_Window toke to the Slave  
                                  * structure for the window, if it exists. */  
   
     /*  
      * Information used by tkSelect.c and tkClipboard.c only:  
      */  
   
     struct TkSelectionInfo *selectionInfoPtr;  
                                 /* First in list of selection information  
                                  * records.  Each entry contains information  
                                  * about the current owner of a particular  
                                  * selection on this display. */  
     Atom multipleAtom;          /* Atom for MULTIPLE.  None means  
                                  * selection stuff isn't initialized. */  
     Atom incrAtom;              /* Atom for INCR. */  
     Atom targetsAtom;           /* Atom for TARGETS. */  
     Atom timestampAtom;         /* Atom for TIMESTAMP. */  
     Atom textAtom;              /* Atom for TEXT. */  
     Atom compoundTextAtom;      /* Atom for COMPOUND_TEXT. */  
     Atom applicationAtom;       /* Atom for TK_APPLICATION. */  
     Atom windowAtom;            /* Atom for TK_WINDOW. */  
     Atom clipboardAtom;         /* Atom for CLIPBOARD. */  
   
     Tk_Window clipWindow;       /* Window used for clipboard ownership and to  
                                  * retrieve selections between processes. NULL  
                                  * means clipboard info hasn't been  
                                  * initialized. */  
     int clipboardActive;        /* 1 means we currently own the clipboard  
                                  * selection, 0 means we don't. */  
     struct TkMainInfo *clipboardAppPtr;  
                                 /* Last application that owned clipboard. */  
     struct TkClipboardTarget *clipTargetPtr;  
                                 /* First in list of clipboard type information  
                                  * records.  Each entry contains information  
                                  * about the buffers for a given selection  
                                  * target. */  
   
     /*  
      * Information used by tkSend.c only:  
      */  
   
     Tk_Window commTkwin;        /* Window used for communication  
                                  * between interpreters during "send"  
                                  * commands.  NULL means send info hasn't  
                                  * been initialized yet. */  
     Atom commProperty;          /* X's name for comm property. */  
     Atom registryProperty;      /* X's name for property containing  
                                  * registry of interpreter names. */  
     Atom appNameProperty;       /* X's name for property used to hold the  
                                  * application name on each comm window. */  
   
     /*  
      * Information used by tkXId.c only:  
      */  
   
     struct TkIdStack *idStackPtr;  
                                 /* First in list of chunks of free resource  
                                  * identifiers, or NULL if there are no free  
                                  * resources. */  
     XID (*defaultAllocProc) _ANSI_ARGS_((Display *display));  
                                 /* Default resource allocator for display. */  
     struct TkIdStack *windowStackPtr;  
                                 /* First in list of chunks of window  
                                  * identifers that can't be reused right  
                                  * now. */  
     int idCleanupScheduled;     /* 1 means a call to WindowIdCleanup has  
                                  * already been scheduled, 0 means it  
                                  * hasn't. */  
   
     /*  
      * Information used by tkUnixWm.c and tkWinWm.c only:  
      */  
   
     int wmTracing;              /* Used to enable or disable tracing in  
                                  * this module.  If tracing is enabled,  
                                  * then information is printed on  
                                  * standard output about interesting  
                                  * interactions with the window manager. */  
     struct TkWmInfo *firstWmPtr;  /* Points to first top-level window. */  
     struct TkWmInfo *foregroundWmPtr;      
                                 /* Points to the foreground window. */  
   
     /*  
      * Information maintained by tkWindow.c for use later on by tkXId.c:  
      */  
   
   
     int destroyCount;           /* Number of Tk_DestroyWindow operations  
                                  * in progress. */  
     unsigned long lastDestroyRequest;  
                                 /* Id of most recent XDestroyWindow request;  
                                  * can re-use ids in windowStackPtr when  
                                  * server has seen this request and event  
                                  * queue is empty. */  
   
     /*  
      * Information used by tkVisual.c only:  
      */  
   
     TkColormap *cmapPtr;        /* First in list of all non-default colormaps  
                                  * allocated for this display. */  
   
     /*  
      * Miscellaneous information:  
      */  
   
 #ifdef TK_USE_INPUT_METHODS  
     XIM inputMethod;            /* Input method for this display */  
 #endif /* TK_USE_INPUT_METHODS */  
     Tcl_HashTable winTable;     /* Maps from X window ids to TkWindow ptrs. */  
   
     int refCount;               /* Reference count of how many Tk applications  
                                  * are using this display. Used to clean up  
                                  * the display when we no longer have any  
                                  * Tk applications using it.  
                                  */  
     /*  
      * The following field were all added for Tk8.3  
      */  
     int mouseButtonState;       /* current mouse button state for this  
                                  * display */  
     int warpInProgress;  
     Window warpWindow;  
     int warpX;  
     int warpY;  
     int useInputMethods;        /* Whether to use input methods */  
 } TkDisplay;  
   
 /*  
  * One of the following structures exists for each error handler  
  * created by a call to Tk_CreateErrorHandler.  The structure  
  * is managed by tkError.c.  
  */  
   
 typedef struct TkErrorHandler {  
     TkDisplay *dispPtr;         /* Display to which handler applies. */  
     unsigned long firstRequest; /* Only errors with serial numbers  
                                  * >= to this are considered. */  
     unsigned long lastRequest;  /* Only errors with serial numbers  
                                  * <= to this are considered.  This  
                                  * field is filled in when XUnhandle  
                                  * is called.  -1 means XUnhandle  
                                  * hasn't been called yet. */  
     int error;                  /* Consider only errors with this  
                                  * error_code (-1 means consider  
                                  * all errors). */  
     int request;                /* Consider only errors with this  
                                  * major request code (-1 means  
                                  * consider all major codes). */  
     int minorCode;              /* Consider only errors with this  
                                  * minor request code (-1 means  
                                  * consider all minor codes). */  
     Tk_ErrorProc *errorProc;    /* Procedure to invoke when a matching  
                                  * error occurs.  NULL means just ignore  
                                  * errors. */  
     ClientData clientData;      /* Arbitrary value to pass to  
                                  * errorProc. */  
     struct TkErrorHandler *nextPtr;  
                                 /* Pointer to next older handler for  
                                  * this display, or NULL for end of  
                                  * list. */  
 } TkErrorHandler;  
   
   
   
   
 /*  
  * One of the following structures exists for each event handler  
  * created by calling Tk_CreateEventHandler.  This information  
  * is used by tkEvent.c only.  
  */  
   
 typedef struct TkEventHandler {  
     unsigned long mask;         /* Events for which to invoke  
                                  * proc. */  
     Tk_EventProc *proc;         /* Procedure to invoke when an event  
                                  * in mask occurs. */  
     ClientData clientData;      /* Argument to pass to proc. */  
     struct TkEventHandler *nextPtr;  
                                 /* Next in list of handlers  
                                  * associated with window (NULL means  
                                  * end of list). */  
 } TkEventHandler;  
   
 /*  
  * Tk keeps one of the following data structures for each main  
  * window (created by a call to TkCreateMainWindow).  It stores  
  * information that is shared by all of the windows associated  
  * with a particular main window.  
  */  
   
 typedef struct TkMainInfo {  
     int refCount;               /* Number of windows whose "mainPtr" fields  
                                  * point here.  When this becomes zero, can  
                                  * free up the structure (the reference  
                                  * count is zero because windows can get  
                                  * deleted in almost any order;  the main  
                                  * window isn't necessarily the last one  
                                  * deleted). */  
     struct TkWindow *winPtr;    /* Pointer to main window. */  
     Tcl_Interp *interp;         /* Interpreter associated with application. */  
     Tcl_HashTable nameTable;    /* Hash table mapping path names to TkWindow  
                                  * structs for all windows related to this  
                                  * main window.  Managed by tkWindow.c. */  
     Tk_BindingTable bindingTable;  
                                 /* Used in conjunction with "bind" command  
                                  * to bind events to Tcl commands. */  
     TkBindInfo bindInfo;        /* Information used by tkBind.c on a per  
                                  * application basis. */  
     struct TkFontInfo *fontInfoPtr;  
                                 /* Information used by tkFont.c on a per  
                                  * application basis. */  
   
     /*  
      * Information used only by tkFocus.c and tk*Embed.c:  
      */  
   
     struct TkToplevelFocusInfo *tlFocusPtr;  
                                 /* First in list of records containing focus  
                                  * information for each top-level in the  
                                  * application.  Used only by tkFocus.c. */  
     struct TkDisplayFocusInfo *displayFocusPtr;  
                                 /* First in list of records containing focus  
                                  * information for each display that this  
                                  * application has ever used.  Used only  
                                  * by tkFocus.c. */  
   
     struct ElArray *optionRootPtr;  
                                 /* Top level of option hierarchy for this  
                                  * main window.  NULL means uninitialized.  
                                  * Managed by tkOption.c. */  
     Tcl_HashTable imageTable;   /* Maps from image names to Tk_ImageMaster  
                                  * structures.  Managed by tkImage.c. */  
     int strictMotif;            /* This is linked to the tk_strictMotif  
                                  * global variable. */  
     struct TkMainInfo *nextPtr; /* Next in list of all main windows managed by  
                                  * this process. */  
 } TkMainInfo;  
   
 /*  
  * Tk keeps the following data structure for each of it's builtin  
  * bitmaps.  This structure is only used by tkBitmap.c and other  
  * platform specific bitmap files.  
  */  
   
 typedef struct {  
     char *source;               /* Bits for bitmap. */  
     int width, height;          /* Dimensions of bitmap. */  
     int native;                 /* 0 means generic (X style) bitmap,  
                                  * 1 means native style bitmap. */  
 } TkPredefBitmap;  
   
 /*  
  * Tk keeps one of the following structures for each window.  
  * Some of the information (like size and location) is a shadow  
  * of information managed by the X server, and some is special  
  * information used here, such as event and geometry management  
  * information.  This information is (mostly) managed by tkWindow.c.  
  * WARNING: the declaration below must be kept consistent with the  
  * Tk_FakeWin structure in tk.h.  If you change one, be sure to  
  * change the other!!  
  */  
   
 typedef struct TkWindow {  
   
     /*  
      * Structural information:  
      */  
   
     Display *display;           /* Display containing window. */  
     TkDisplay *dispPtr;         /* Tk's information about display  
                                  * for window. */  
     int screenNum;              /* Index of screen for window, among all  
                                  * those for dispPtr. */  
     Visual *visual;             /* Visual to use for window.  If not default,  
                                  * MUST be set before X window is created. */  
     int depth;                  /* Number of bits/pixel. */  
     Window window;              /* X's id for window.   NULL means window  
                                  * hasn't actually been created yet, or it's  
                                  * been deleted. */  
     struct TkWindow *childList; /* First in list of child windows,  
                                  * or NULL if no children.  List is in  
                                  * stacking order, lowest window first.*/  
     struct TkWindow *lastChildPtr;  
                                 /* Last in list of child windows (highest  
                                  * in stacking order), or NULL if no  
                                  * children. */  
     struct TkWindow *parentPtr; /* Pointer to parent window (logical  
                                  * parent, not necessarily X parent).  NULL  
                                  * means either this is the main window, or  
                                  * the window's parent has already been  
                                  * deleted. */  
     struct TkWindow *nextPtr;   /* Next higher sibling (in stacking order)  
                                  * in list of children with same parent.  NULL  
                                  * means end of list. */  
     TkMainInfo *mainPtr;        /* Information shared by all windows  
                                  * associated with a particular main  
                                  * window.  NULL means this window is  
                                  * a rogue that isn't associated with  
                                  * any application (at present, this  
                                  * only happens for the dummy windows  
                                  * used for "send" communication).  */  
   
     /*  
      * Name and type information for the window:  
      */  
   
     char *pathName;             /* Path name of window (concatenation  
                                  * of all names between this window and  
                                  * its top-level ancestor).  This is a  
                                  * pointer into an entry in  
                                  * mainPtr->nameTable.  NULL means that  
                                  * the window hasn't been completely  
                                  * created yet. */  
     Tk_Uid nameUid;             /* Name of the window within its parent  
                                  * (unique within the parent). */  
     Tk_Uid classUid;            /* Class of the window.  NULL means window  
                                  * hasn't been given a class yet. */  
   
     /*  
      * Geometry and other attributes of window.  This information  
      * may not be updated on the server immediately;  stuff that  
      * hasn't been reflected in the server yet is called "dirty".  
      * At present, information can be dirty only if the window  
      * hasn't yet been created.  
      */  
   
     XWindowChanges changes;     /* Geometry and other info about  
                                  * window. */  
     unsigned int dirtyChanges;  /* Bits indicate fields of "changes"  
                                  * that are dirty. */  
     XSetWindowAttributes atts;  /* Current attributes of window. */  
     unsigned long dirtyAtts;    /* Bits indicate fields of "atts"  
                                  * that are dirty. */  
   
     unsigned int flags;         /* Various flag values:  these are all  
                                  * defined in tk.h (confusing, but they're  
                                  * needed there for some query macros). */  
   
     /*  
      * Information kept by the event manager (tkEvent.c):  
      */  
   
     TkEventHandler *handlerList;/* First in list of event handlers  
                                  * declared for this window, or  
                                  * NULL if none. */  
 #ifdef TK_USE_INPUT_METHODS  
     XIC inputContext;           /* Input context (for input methods). */  
 #endif /* TK_USE_INPUT_METHODS */  
   
     /*  
      * Information used for event bindings (see "bind" and "bindtags"  
      * commands in tkCmds.c):  
      */  
   
     ClientData *tagPtr;         /* Points to array of tags used for bindings  
                                  * on this window.  Each tag is a Tk_Uid.  
                                  * Malloc'ed.  NULL means no tags. */  
     int numTags;                /* Number of tags at *tagPtr. */  
   
     /*  
      * Information used by tkOption.c to manage options for the  
      * window.  
      */  
   
     int optionLevel;            /* -1 means no option information is  
                                  * currently cached for this window.  
                                  * Otherwise this gives the level in  
                                  * the option stack at which info is  
                                  * cached. */  
     /*  
      * Information used by tkSelect.c to manage the selection.  
      */  
   
     struct TkSelHandler *selHandlerList;  
                                 /* First in list of handlers for  
                                  * returning the selection in various  
                                  * forms. */  
   
     /*  
      * Information used by tkGeometry.c for geometry management.  
      */  
   
     Tk_GeomMgr *geomMgrPtr;     /* Information about geometry manager for  
                                  * this window. */  
     ClientData geomData;        /* Argument for geometry manager procedures. */  
     int reqWidth, reqHeight;    /* Arguments from last call to  
                                  * Tk_GeometryRequest, or 0's if  
                                  * Tk_GeometryRequest hasn't been  
                                  * called. */  
     int internalBorderWidth;    /* Width of internal border of window  
                                  * (0 means no internal border).  Geometry  
                                  * managers should not normally place children  
                                  * on top of the border. */  
   
     /*  
      * Information maintained by tkWm.c for window manager communication.  
      */  
   
     struct TkWmInfo *wmInfoPtr; /* For top-level windows (and also  
                                  * for special Unix menubar and wrapper  
                                  * windows), points to structure with  
                                  * wm-related info (see tkWm.c).  For  
                                  * other windows, this is NULL. */  
   
     /*  
      * Information used by widget classes.  
      */  
   
     TkClassProcs *classProcsPtr;  
     ClientData instanceData;  
   
     /*  
      * Platform specific information private to each port.  
      */  
   
     struct TkWindowPrivate *privatePtr;  
 } TkWindow;  
   
 /*  
  * The following structure is used as a two way map between integers  
  * and strings, usually to map between an internal C representation  
  * and the strings used in Tcl.  
  */  
   
 typedef struct TkStateMap {  
     int numKey;                 /* Integer representation of a value. */  
     char *strKey;               /* String representation of a value. */  
 } TkStateMap;  
   
 /*  
  * This structure is used by the Mac and Window porting layers as  
  * the internal representation of a clip_mask in a GC.  
  */  
   
 typedef struct TkpClipMask {  
     int type;                   /* One of TKP_CLIP_PIXMAP or TKP_CLIP_REGION */  
     union {  
         Pixmap pixmap;  
         TkRegion region;  
     } value;  
 } TkpClipMask;  
   
 #define TKP_CLIP_PIXMAP 0  
 #define TKP_CLIP_REGION 1  
   
 /*  
  * Pointer to first entry in list of all displays currently known.  
  */  
   
 extern TkDisplay *tkDisplayList;  
   
 /*  
  * Return values from TkGrabState:  
  */  
   
 #define TK_GRAB_NONE            0  
 #define TK_GRAB_IN_TREE         1  
 #define TK_GRAB_ANCESTOR        2  
 #define TK_GRAB_EXCLUDED        3  
   
 /*  
  * The macro below is used to modify a "char" value (e.g. by casting  
  * it to an unsigned character) so that it can be used safely with  
  * macros such as isspace.  
  */  
   
 #define UCHAR(c) ((unsigned char) (c))  
   
 /*  
  * The following symbol is used in the mode field of FocusIn events  
  * generated by an embedded application to request the input focus from  
  * its container.  
  */  
   
 #define EMBEDDED_APP_WANTS_FOCUS (NotifyNormal + 20)  
   
 /*  
  * The following special modifier mask bits are defined, to indicate  
  * logical modifiers such as Meta and Alt that may float among the  
  * actual modifier bits.  
  */  
   
 #define META_MASK       (AnyModifier<<1)  
 #define ALT_MASK        (AnyModifier<<2)  
   
 /*  
  * Miscellaneous variables shared among Tk modules but not exported  
  * to the outside world:  
  */  
   
 extern Tk_SmoothMethod          tkBezierSmoothMethod;  
 extern Tk_ImageType             tkBitmapImageType;  
 extern Tk_PhotoImageFormat      tkImgFmtGIF;  
 extern void                     (*tkHandleEventProc) _ANSI_ARGS_((  
                                     XEvent* eventPtr));  
 extern Tk_PhotoImageFormat      tkImgFmtPPM;  
 extern TkMainInfo               *tkMainWindowList;  
 extern Tk_ImageType             tkPhotoImageType;  
 extern Tcl_HashTable            tkPredefBitmapTable;  
 extern int                      tkSendSerial;  
   
 #include "tkIntDecls.h"  
   
 #ifdef BUILD_tk  
 # undef TCL_STORAGE_CLASS  
 # define TCL_STORAGE_CLASS DLLEXPORT  
 #endif  
   
 /*  
  * Internal procedures shared among Tk modules but not exported  
  * to the outside world:  
  */  
   
 extern int              Tk_AfterCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_BellObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_BindCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_BindtagsCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_ButtonObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_CanvasObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[]));  
 extern int              Tk_CheckbuttonObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_ClipboardCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_ChooseColorObjCmd _ANSI_ARGS_((  
                             ClientData clientData, Tcl_Interp *interp,  
                             int objc, Tcl_Obj *CONST objv[]));  
 extern int              Tk_ChooseDirectoryObjCmd _ANSI_ARGS_((  
                             ClientData clientData, Tcl_Interp *interp,  
                             int objc, Tcl_Obj *CONST objv[]));  
 extern int              Tk_ChooseFontObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_DestroyObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_EntryObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_EventObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_FileeventCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_FrameObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_FocusObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_FontObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_GetOpenFileObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_GetSaveFileObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_GrabCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_GridCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_ImageObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_LabelObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_ListboxObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_LowerObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_MenubuttonObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_MessageBoxObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_MessageCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_OptionObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_PackCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_PlaceCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_RadiobuttonObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_RaiseObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_ScaleObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_ScrollbarCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_SelectionCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_SendCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_SendObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_TextCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_TkObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_TkwaitCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              Tk_ToplevelObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_UpdateObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_WinfoObjCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int objc,  
                             Tcl_Obj *CONST objv[]));  
 extern int              Tk_WmCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
   
 void    TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,  
                             int devId, char *buffer, long size));  
   
 extern void             TkEventInit _ANSI_ARGS_((void));  
   
 extern int              TkCreateMenuCmd _ANSI_ARGS_((Tcl_Interp *interp));  
 extern int              TkDeadAppCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
   
 extern int              TkpTestembedCmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
 extern int              TkCanvasGetCoordObj _ANSI_ARGS_((Tcl_Interp *interp,  
                             Tk_Canvas canvas, Tcl_Obj *obj,  
                             double *doublePtr));  
 extern int              TkCanvasDashParseProc _ANSI_ARGS_((  
                             ClientData clientData, Tcl_Interp *interp,  
                             Tk_Window tkwin, CONST char *value, char *widgRec,  
                             int offset));  
 extern char *           TkCanvasDashPrintProc _ANSI_ARGS_((  
                             ClientData clientData, Tk_Window tkwin,  
                             char *widgRec, int offset,  
                             Tcl_FreeProc **freeProcPtr));  
 extern int              TkGetDoublePixels _ANSI_ARGS_((Tcl_Interp *interp,  
                             Tk_Window tkwin, CONST char *string,  
                             double *doublePtr));  
 extern int              TkOffsetParseProc _ANSI_ARGS_((  
                             ClientData clientData, Tcl_Interp *interp,  
                             Tk_Window tkwin, CONST char *value, char *widgRec,  
                             int offset));  
 extern char *           TkOffsetPrintProc _ANSI_ARGS_((  
                             ClientData clientData, Tk_Window tkwin,  
                             char *widgRec, int offset,  
                             Tcl_FreeProc **freeProcPtr));  
 extern int              TkOrientParseProc _ANSI_ARGS_((  
                             ClientData clientData, Tcl_Interp *interp,  
                             Tk_Window tkwin, CONST char *value,  
                             char *widgRec, int offset));  
 extern char *           TkOrientPrintProc _ANSI_ARGS_((  
                             ClientData clientData, Tk_Window tkwin,  
                             char *widgRec, int offset,  
                             Tcl_FreeProc **freeProcPtr));  
 extern int              TkPixelParseProc _ANSI_ARGS_((  
                             ClientData clientData, Tcl_Interp *interp,  
                             Tk_Window tkwin, CONST char *value, char *widgRec,  
                             int offset));  
 extern char *           TkPixelPrintProc _ANSI_ARGS_((  
                             ClientData clientData, Tk_Window tkwin,  
                             char *widgRec, int offset,  
                             Tcl_FreeProc **freeProcPtr));  
 extern int              TkPostscriptImage _ANSI_ARGS_((Tcl_Interp *interp,  
                             Tk_Window tkwin, Tk_PostscriptInfo psInfo,  
                             XImage *ximage, int x, int y, int width,  
                             int height));  
 extern int              TkSmoothParseProc _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, Tk_Window tkwin,  
                             CONST char *value, char *recordPtr, int offset));  
 extern char *           TkSmoothPrintProc _ANSI_ARGS_((ClientData clientData,  
                             Tk_Window tkwin, char *recordPtr, int offset,  
                             Tcl_FreeProc **freeProcPtr));  
 extern int              TkStateParseProc _ANSI_ARGS_((  
                             ClientData clientData, Tcl_Interp *interp,  
                             Tk_Window tkwin, CONST char *value,  
                             char *widgRec, int offset));  
 extern char *           TkStatePrintProc _ANSI_ARGS_((  
                             ClientData clientData, Tk_Window tkwin,  
                             char *widgRec, int offset,  
                             Tcl_FreeProc **freeProcPtr));  
 extern int              TkTileParseProc _ANSI_ARGS_((  
                             ClientData clientData, Tcl_Interp *interp,  
                             Tk_Window tkwin, CONST char *value, char *widgRec,  
                             int offset));  
 extern char *           TkTilePrintProc _ANSI_ARGS_((  
                             ClientData clientData, Tk_Window tkwin,  
                             char *widgRec, int offset,  
                             Tcl_FreeProc **freeProcPtr));  
   
 /*  
  * Unsupported commands.  
  */  
 extern int              TkUnsupported1Cmd _ANSI_ARGS_((ClientData clientData,  
                             Tcl_Interp *interp, int argc, char **argv));  
   
 # undef TCL_STORAGE_CLASS  
 # define TCL_STORAGE_CLASS DLLIMPORT  
   
 #endif  /* _TKINT */  
   
   
 /* $History: tkInt.h $  
  *  
  * *****************  Version 1  *****************  
  * User: Dtashley     Date: 1/02/01    Time: 2:51a  
  * Created in $/IjuScripter, IjuConsole/Source/Tk Base  
  * Initial check-in.  
  */  
   
 /* End of TKINT.H */  
1    /* $Header$ */
2    
3    /*
4     * tkInt.h --
5     *
6     *      Declarations for things used internally by the Tk
7     *      procedures but not exported outside the module.
8     *
9     * Copyright (c) 1990-1994 The Regents of the University of California.
10     * Copyright (c) 1994-1997 Sun Microsystems, Inc.
11     * Copyright (c) 1998 by Scriptics Corporation.
12     *
13     * See the file "license.terms" for information on usage and redistribution
14     * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
15     *
16     * RCS: $Id: tkint.h,v 1.1.1.1 2001/06/13 05:03:44 dtashley Exp $
17     */
18    
19    #ifndef _TKINT
20    #define _TKINT
21    
22    #ifndef _TK
23    #include "tk.h"
24    #endif
25    #ifndef _TCL
26    #include "tcl.h"
27    #endif
28    #ifndef _TKPORT
29    #include "tkPort.h"
30    #endif
31    
32    /*
33     * Opaque type declarations:
34     */
35    
36    typedef struct TkColormap TkColormap;
37    typedef struct TkGrabEvent TkGrabEvent;
38    typedef struct TkpCursor_ *TkpCursor;
39    typedef struct TkRegion_ *TkRegion;
40    typedef struct TkStressedCmap TkStressedCmap;
41    typedef struct TkBindInfo_ *TkBindInfo;
42    
43    /*
44     * Procedure types.
45     */
46    
47    typedef int (TkBindEvalProc) _ANSI_ARGS_((ClientData clientData,
48            Tcl_Interp *interp, XEvent *eventPtr, Tk_Window tkwin,
49            KeySym keySym));
50    typedef void (TkBindFreeProc) _ANSI_ARGS_((ClientData clientData));
51    typedef Window (TkClassCreateProc) _ANSI_ARGS_((Tk_Window tkwin,
52            Window parent, ClientData instanceData));
53    typedef void (TkClassGeometryProc) _ANSI_ARGS_((ClientData instanceData));
54    typedef void (TkClassModalProc) _ANSI_ARGS_((Tk_Window tkwin,
55            XEvent *eventPtr));
56    
57    
58    /*
59     * Widget class procedures used to implement platform specific widget
60     * behavior.
61     */
62    
63    typedef struct TkClassProcs {
64        TkClassCreateProc *createProc;
65                                    /* Procedure to invoke when the
66                                       platform-dependent window needs to be
67                                       created. */
68        TkClassGeometryProc *geometryProc;
69                                    /* Procedure to invoke when the geometry of a
70                                       window needs to be recalculated as a result
71                                       of some change in the system. */
72        TkClassModalProc *modalProc;
73                                    /* Procedure to invoke after all bindings on a
74                                       widget have been triggered in order to
75                                       handle a modal loop. */
76    } TkClassProcs;
77    
78    /*
79     * One of the following structures is maintained for each cursor in
80     * use in the system.  This structure is used by tkCursor.c and the
81     * various system specific cursor files.
82     */
83    
84    typedef struct TkCursor {
85        Tk_Cursor cursor;           /* System specific identifier for cursor. */
86        Display *display;           /* Display containing cursor. Needed for
87                                     * disposal and retrieval of cursors. */
88        int resourceRefCount;       /* Number of active uses of this cursor (each
89                                     * active use corresponds to a call to
90                                     * Tk_AllocPreserveFromObj or Tk_Preserve).
91                                     * If this count is 0, then this structure
92                                     * is no longer valid and it isn't present
93                                     * in a hash table: it is being kept around
94                                     * only because there are objects referring
95                                     * to it.  The structure is freed when
96                                     * resourceRefCount and objRefCount are
97                                     * both 0. */
98        int objRefCount;            /* Number of Tcl objects that reference
99                                     * this structure.. */
100        Tcl_HashTable *otherTable;  /* Second table (other than idTable) used
101                                     * to index this entry. */
102        Tcl_HashEntry *hashPtr;     /* Entry in otherTable for this structure
103                                     * (needed when deleting). */
104        Tcl_HashEntry *idHashPtr;   /* Entry in idTable for this structure
105                                     * (needed when deleting). */
106        struct TkCursor *nextPtr;   /* Points to the next TkCursor structure with
107                                     * the same name.  Cursors with the same
108                                     * name but different displays are chained
109                                     * together off a single hash table entry. */
110    } TkCursor;
111    
112    /*
113     * One of the following structures is maintained for each display
114     * containing a window managed by Tk.  In part, the structure is
115     * used to store thread-specific data, since each thread will have
116     * its own TkDisplay structure.
117     */
118    
119    typedef struct TkDisplay {
120        Display *display;           /* Xlib's info about display. */
121        struct TkDisplay *nextPtr;  /* Next in list of all displays. */
122        char *name;                 /* Name of display (with any screen
123                                     * identifier removed).  Malloc-ed. */
124        Time lastEventTime;         /* Time of last event received for this
125                                     * display. */
126    
127        /*
128         * Information used primarily by tk3d.c:
129         */
130    
131        int borderInit;             /* 0 means borderTable needs initializing. */
132        Tcl_HashTable borderTable;  /* Maps from color name to TkBorder
133                                     * structure. */
134    
135        /*
136         * Information used by tkAtom.c only:
137         */
138    
139        int atomInit;               /* 0 means stuff below hasn't been
140                                     * initialized yet. */
141        Tcl_HashTable nameTable;    /* Maps from names to Atom's. */
142        Tcl_HashTable atomTable;    /* Maps from Atom's back to names. */
143    
144        /*
145         * Information used primarily by tkBind.c:
146         */
147    
148        int bindInfoStale;          /* Non-zero means the variables in this
149                                     * part of the structure are potentially
150                                     * incorrect and should be recomputed. */
151        unsigned int modeModMask;   /* Has one bit set to indicate the modifier
152                                     * corresponding to "mode shift".  If no
153                                     * such modifier, than this is zero. */
154        unsigned int metaModMask;   /* Has one bit set to indicate the modifier
155                                     * corresponding to the "Meta" key.  If no
156                                     * such modifier, then this is zero. */
157        unsigned int altModMask;    /* Has one bit set to indicate the modifier
158                                     * corresponding to the "Meta" key.  If no
159                                     * such modifier, then this is zero. */
160        enum {LU_IGNORE, LU_CAPS, LU_SHIFT} lockUsage;
161                                    /* Indicates how to interpret lock modifier. */
162        int numModKeyCodes;         /* Number of entries in modKeyCodes array
163                                     * below. */
164        KeyCode *modKeyCodes;       /* Pointer to an array giving keycodes for
165                                     * all of the keys that have modifiers
166                                     * associated with them.  Malloc'ed, but
167                                     * may be NULL. */
168    
169        /*
170         * Information used by tkBitmap.c only:
171         */
172      
173        int bitmapInit;             /* 0 means tables above need initializing. */
174        int bitmapAutoNumber;       /* Used to number bitmaps. */
175        Tcl_HashTable bitmapNameTable;    
176                                    /* Maps from name of bitmap to the first
177                                     * TkBitmap record for that name. */
178        Tcl_HashTable bitmapIdTable;/* Maps from bitmap id to the TkBitmap
179                                     * structure for the bitmap. */
180        Tcl_HashTable bitmapDataTable;    
181                                    /* Used by Tk_GetBitmapFromData to map from
182                                     * a collection of in-core data about a
183                                     * bitmap to a reference giving an auto-
184                                     * matically-generated name for the bitmap. */
185    
186        /*
187         * Information used by tkCanvas.c only:
188         */
189    
190        int numIdSearches;          
191        int numSlowSearches;
192    
193        /*
194         * Used by tkColor.c only:
195         */
196    
197        int colorInit;              /* 0 means color module needs initializing. */
198        TkStressedCmap *stressPtr;  /* First in list of colormaps that have
199                                     * filled up, so we have to pick an
200                                     * approximate color. */
201        Tcl_HashTable colorNameTable;
202                                    /* Maps from color name to TkColor structure
203                                     * for that color. */
204        Tcl_HashTable colorValueTable;
205                                    /* Maps from integer RGB values to TkColor
206                                     * structures. */
207    
208        /*
209         * Used by tkCursor.c only:
210         */
211    
212        int cursorInit;             /* 0 means cursor module need initializing. */
213        Tcl_HashTable cursorNameTable;
214                                    /* Maps from a string name to a cursor to the
215                                     * TkCursor record for the cursor. */
216        Tcl_HashTable cursorDataTable;
217                                    /* Maps from a collection of in-core data
218                                     * about a cursor to a TkCursor structure. */
219        Tcl_HashTable cursorIdTable;
220                                    /* Maps from a cursor id to the TkCursor
221                                     * structure for the cursor. */
222        char cursorString[20];      /* Used to store a cursor id string. */
223        Font cursorFont;            /* Font to use for standard cursors.
224                                     * None means font not loaded yet. */
225    
226        /*
227         * Information used by tkError.c only:
228         */
229    
230        struct TkErrorHandler *errorPtr;
231                                    /* First in list of error handlers
232                                     * for this display.  NULL means
233                                     * no handlers exist at present. */
234        int deleteCount;            /* Counts # of handlers deleted since
235                                     * last time inactive handlers were
236                                     * garbage-collected.  When this number
237                                     * gets big, handlers get cleaned up. */
238    
239        /*
240         * Used by tkEvent.c only:
241         */
242    
243        struct TkWindowEvent *delayedMotionPtr;
244                                    /* Points to a malloc-ed motion event
245                                     * whose processing has been delayed in
246                                     * the hopes that another motion event
247                                     * will come along right away and we can
248                                     * merge the two of them together.  NULL
249                                     * means that there is no delayed motion
250                                     * event. */
251    
252        /*
253         * Information used by tkFocus.c only:
254         */
255    
256        int focusDebug;             /* 1 means collect focus debugging
257                                     * statistics. */
258        struct TkWindow *implicitWinPtr;
259                                    /* If the focus arrived at a toplevel window
260                                     * implicitly via an Enter event (rather
261                                     * than via a FocusIn event), this points
262                                     * to the toplevel window.  Otherwise it is
263                                     * NULL. */
264        struct TkWindow *focusPtr;  /* Points to the window on this display that
265                                     * should be receiving keyboard events.  When
266                                     * multiple applications on the display have
267                                     * the focus, this will refer to the
268                                     * innermost window in the innermost
269                                     * application.  This information isn't used
270                                     * under Unix or Windows, but it's needed on
271                                     * the Macintosh. */
272    
273        /*
274         * Information used by tkGC.c only:
275         */
276        
277        Tcl_HashTable gcValueTable; /* Maps from a GC's values to a TkGC structure
278                                     * describing a GC with those values. */
279        Tcl_HashTable gcIdTable;    /* Maps from a GC to a TkGC. */
280        int gcInit;                 /* 0 means the tables below need
281                                     * initializing. */
282    
283        /*
284         * Information used by tkGeometry.c only:
285         */
286    
287        Tcl_HashTable maintainHashTable;
288                                    /* Hash table that maps from a master's
289                                     * Tk_Window token to a list of slaves
290                                     * managed by that master. */
291        int geomInit;    
292    
293        /*
294         * Information used by tkGet.c only:
295         */
296      
297        Tcl_HashTable uidTable;     /* Stores all Tk_Uid  used in a thread. */
298        int uidInit;                /* 0 means uidTable needs initializing. */
299    
300        /*
301         * Information used by tkGrab.c only:
302         */
303    
304        struct TkWindow *grabWinPtr;
305                                    /* Window in which the pointer is currently
306                                     * grabbed, or NULL if none. */
307        struct TkWindow *eventualGrabWinPtr;
308                                    /* Value that grabWinPtr will have once the
309                                     * grab event queue (below) has been
310                                     * completely emptied. */
311        struct TkWindow *buttonWinPtr;
312                                    /* Window in which first mouse button was
313                                     * pressed while grab was in effect, or NULL
314                                     * if no such press in effect. */
315        struct TkWindow *serverWinPtr;
316                                    /* If no application contains the pointer then
317                                     * this is NULL.  Otherwise it contains the
318                                     * last window for which we've gotten an
319                                     * Enter or Leave event from the server (i.e.
320                                     * the last window known to have contained
321                                     * the pointer).  Doesn't reflect events
322                                     * that were synthesized in tkGrab.c. */
323        TkGrabEvent *firstGrabEventPtr;
324                                    /* First in list of enter/leave events
325                                     * synthesized by grab code.  These events
326                                     * must be processed in order before any other
327                                     * events are processed.  NULL means no such
328                                     * events. */
329        TkGrabEvent *lastGrabEventPtr;
330                                    /* Last in list of synthesized events, or NULL
331                                     * if list is empty. */
332        int grabFlags;              /* Miscellaneous flag values.  See definitions
333                                     * in tkGrab.c. */
334    
335        /*
336         * Information used by tkGrid.c only:
337         */
338    
339        int gridInit;               /* 0 means table below needs initializing. */
340        Tcl_HashTable gridHashTable;/* Maps from Tk_Window tokens to
341                                     * corresponding Grid structures. */
342    
343        /*
344         * Information used by tkImage.c only:
345         */
346    
347        int imageId;                /* Value used to number image ids. */
348    
349        /*
350         * Information used by tkMacWinMenu.c only:
351         */
352    
353        int postCommandGeneration;  
354    
355        /*
356         * Information used by tkOption.c only.
357         */
358    
359    
360    
361        /*
362         * Information used by tkPack.c only.
363         */
364    
365        int packInit;              /* 0 means table below needs initializing. */
366        Tcl_HashTable packerHashTable;
367                                   /* Maps from Tk_Window tokens to
368                                    * corresponding Packer structures. */
369        
370    
371        /*
372         * Information used by tkPlace.c only.
373         */
374    
375        int placeInit;              /* 0 means tables below need initializing. */
376        Tcl_HashTable masterTable;  /* Maps from Tk_Window toke to the Master
377                                     * structure for the window, if it exists. */
378        Tcl_HashTable slaveTable;   /* Maps from Tk_Window toke to the Slave
379                                     * structure for the window, if it exists. */
380    
381        /*
382         * Information used by tkSelect.c and tkClipboard.c only:
383         */
384    
385        struct TkSelectionInfo *selectionInfoPtr;
386                                    /* First in list of selection information
387                                     * records.  Each entry contains information
388                                     * about the current owner of a particular
389                                     * selection on this display. */
390        Atom multipleAtom;          /* Atom for MULTIPLE.  None means
391                                     * selection stuff isn't initialized. */
392        Atom incrAtom;              /* Atom for INCR. */
393        Atom targetsAtom;           /* Atom for TARGETS. */
394        Atom timestampAtom;         /* Atom for TIMESTAMP. */
395        Atom textAtom;              /* Atom for TEXT. */
396        Atom compoundTextAtom;      /* Atom for COMPOUND_TEXT. */
397        Atom applicationAtom;       /* Atom for TK_APPLICATION. */
398        Atom windowAtom;            /* Atom for TK_WINDOW. */
399        Atom clipboardAtom;         /* Atom for CLIPBOARD. */
400    
401        Tk_Window clipWindow;       /* Window used for clipboard ownership and to
402                                     * retrieve selections between processes. NULL
403                                     * means clipboard info hasn't been
404                                     * initialized. */
405        int clipboardActive;        /* 1 means we currently own the clipboard
406                                     * selection, 0 means we don't. */
407        struct TkMainInfo *clipboardAppPtr;
408                                    /* Last application that owned clipboard. */
409        struct TkClipboardTarget *clipTargetPtr;
410                                    /* First in list of clipboard type information
411                                     * records.  Each entry contains information
412                                     * about the buffers for a given selection
413                                     * target. */
414    
415        /*
416         * Information used by tkSend.c only:
417         */
418    
419        Tk_Window commTkwin;        /* Window used for communication
420                                     * between interpreters during "send"
421                                     * commands.  NULL means send info hasn't
422                                     * been initialized yet. */
423        Atom commProperty;          /* X's name for comm property. */
424        Atom registryProperty;      /* X's name for property containing
425                                     * registry of interpreter names. */
426        Atom appNameProperty;       /* X's name for property used to hold the
427                                     * application name on each comm window. */
428    
429        /*
430         * Information used by tkXId.c only:
431         */
432    
433        struct TkIdStack *idStackPtr;
434                                    /* First in list of chunks of free resource
435                                     * identifiers, or NULL if there are no free
436                                     * resources. */
437        XID (*defaultAllocProc) _ANSI_ARGS_((Display *display));
438                                    /* Default resource allocator for display. */
439        struct TkIdStack *windowStackPtr;
440                                    /* First in list of chunks of window
441                                     * identifers that can't be reused right
442                                     * now. */
443        int idCleanupScheduled;     /* 1 means a call to WindowIdCleanup has
444                                     * already been scheduled, 0 means it
445                                     * hasn't. */
446    
447        /*
448         * Information used by tkUnixWm.c and tkWinWm.c only:
449         */
450    
451        int wmTracing;              /* Used to enable or disable tracing in
452                                     * this module.  If tracing is enabled,
453                                     * then information is printed on
454                                     * standard output about interesting
455                                     * interactions with the window manager. */
456        struct TkWmInfo *firstWmPtr;  /* Points to first top-level window. */
457        struct TkWmInfo *foregroundWmPtr;    
458                                    /* Points to the foreground window. */
459    
460        /*
461         * Information maintained by tkWindow.c for use later on by tkXId.c:
462         */
463    
464    
465        int destroyCount;           /* Number of Tk_DestroyWindow operations
466                                     * in progress. */
467        unsigned long lastDestroyRequest;
468                                    /* Id of most recent XDestroyWindow request;
469                                     * can re-use ids in windowStackPtr when
470                                     * server has seen this request and event
471                                     * queue is empty. */
472    
473        /*
474         * Information used by tkVisual.c only:
475         */
476    
477        TkColormap *cmapPtr;        /* First in list of all non-default colormaps
478                                     * allocated for this display. */
479    
480        /*
481         * Miscellaneous information:
482         */
483    
484    #ifdef TK_USE_INPUT_METHODS
485        XIM inputMethod;            /* Input method for this display */
486    #endif /* TK_USE_INPUT_METHODS */
487        Tcl_HashTable winTable;     /* Maps from X window ids to TkWindow ptrs. */
488    
489        int refCount;               /* Reference count of how many Tk applications
490                                     * are using this display. Used to clean up
491                                     * the display when we no longer have any
492                                     * Tk applications using it.
493                                     */
494        /*
495         * The following field were all added for Tk8.3
496         */
497        int mouseButtonState;       /* current mouse button state for this
498                                     * display */
499        int warpInProgress;
500        Window warpWindow;
501        int warpX;
502        int warpY;
503        int useInputMethods;        /* Whether to use input methods */
504    } TkDisplay;
505    
506    /*
507     * One of the following structures exists for each error handler
508     * created by a call to Tk_CreateErrorHandler.  The structure
509     * is managed by tkError.c.
510     */
511    
512    typedef struct TkErrorHandler {
513        TkDisplay *dispPtr;         /* Display to which handler applies. */
514        unsigned long firstRequest; /* Only errors with serial numbers
515                                     * >= to this are considered. */
516        unsigned long lastRequest;  /* Only errors with serial numbers
517                                     * <= to this are considered.  This
518                                     * field is filled in when XUnhandle
519                                     * is called.  -1 means XUnhandle
520                                     * hasn't been called yet. */
521        int error;                  /* Consider only errors with this
522                                     * error_code (-1 means consider
523                                     * all errors). */
524        int request;                /* Consider only errors with this
525                                     * major request code (-1 means
526                                     * consider all major codes). */
527        int minorCode;              /* Consider only errors with this
528                                     * minor request code (-1 means
529                                     * consider all minor codes). */
530        Tk_ErrorProc *errorProc;    /* Procedure to invoke when a matching
531                                     * error occurs.  NULL means just ignore
532                                     * errors. */
533        ClientData clientData;      /* Arbitrary value to pass to
534                                     * errorProc. */
535        struct TkErrorHandler *nextPtr;
536                                    /* Pointer to next older handler for
537                                     * this display, or NULL for end of
538                                     * list. */
539    } TkErrorHandler;
540    
541    
542    
543    
544    /*
545     * One of the following structures exists for each event handler
546     * created by calling Tk_CreateEventHandler.  This information
547     * is used by tkEvent.c only.
548     */
549    
550    typedef struct TkEventHandler {
551        unsigned long mask;         /* Events for which to invoke
552                                     * proc. */
553        Tk_EventProc *proc;         /* Procedure to invoke when an event
554                                     * in mask occurs. */
555        ClientData clientData;      /* Argument to pass to proc. */
556        struct TkEventHandler *nextPtr;
557                                    /* Next in list of handlers
558                                     * associated with window (NULL means
559                                     * end of list). */
560    } TkEventHandler;
561    
562    /*
563     * Tk keeps one of the following data structures for each main
564     * window (created by a call to TkCreateMainWindow).  It stores
565     * information that is shared by all of the windows associated
566     * with a particular main window.
567     */
568    
569    typedef struct TkMainInfo {
570        int refCount;               /* Number of windows whose "mainPtr" fields
571                                     * point here.  When this becomes zero, can
572                                     * free up the structure (the reference
573                                     * count is zero because windows can get
574                                     * deleted in almost any order;  the main
575                                     * window isn't necessarily the last one
576                                     * deleted). */
577        struct TkWindow *winPtr;    /* Pointer to main window. */
578        Tcl_Interp *interp;         /* Interpreter associated with application. */
579        Tcl_HashTable nameTable;    /* Hash table mapping path names to TkWindow
580                                     * structs for all windows related to this
581                                     * main window.  Managed by tkWindow.c. */
582        Tk_BindingTable bindingTable;
583                                    /* Used in conjunction with "bind" command
584                                     * to bind events to Tcl commands. */
585        TkBindInfo bindInfo;        /* Information used by tkBind.c on a per
586                                     * application basis. */
587        struct TkFontInfo *fontInfoPtr;
588                                    /* Information used by tkFont.c on a per
589                                     * application basis. */
590    
591        /*
592         * Information used only by tkFocus.c and tk*Embed.c:
593         */
594    
595        struct TkToplevelFocusInfo *tlFocusPtr;
596                                    /* First in list of records containing focus
597                                     * information for each top-level in the
598                                     * application.  Used only by tkFocus.c. */
599        struct TkDisplayFocusInfo *displayFocusPtr;
600                                    /* First in list of records containing focus
601                                     * information for each display that this
602                                     * application has ever used.  Used only
603                                     * by tkFocus.c. */
604    
605        struct ElArray *optionRootPtr;
606                                    /* Top level of option hierarchy for this
607                                     * main window.  NULL means uninitialized.
608                                     * Managed by tkOption.c. */
609        Tcl_HashTable imageTable;   /* Maps from image names to Tk_ImageMaster
610                                     * structures.  Managed by tkImage.c. */
611        int strictMotif;            /* This is linked to the tk_strictMotif
612                                     * global variable. */
613        struct TkMainInfo *nextPtr; /* Next in list of all main windows managed by
614                                     * this process. */
615    } TkMainInfo;
616    
617    /*
618     * Tk keeps the following data structure for each of it's builtin
619     * bitmaps.  This structure is only used by tkBitmap.c and other
620     * platform specific bitmap files.
621     */
622    
623    typedef struct {
624        char *source;               /* Bits for bitmap. */
625        int width, height;          /* Dimensions of bitmap. */
626        int native;                 /* 0 means generic (X style) bitmap,
627                                     * 1 means native style bitmap. */
628    } TkPredefBitmap;
629    
630    /*
631     * Tk keeps one of the following structures for each window.
632     * Some of the information (like size and location) is a shadow
633     * of information managed by the X server, and some is special
634     * information used here, such as event and geometry management
635     * information.  This information is (mostly) managed by tkWindow.c.
636     * WARNING: the declaration below must be kept consistent with the
637     * Tk_FakeWin structure in tk.h.  If you change one, be sure to
638     * change the other!!
639     */
640    
641    typedef struct TkWindow {
642    
643        /*
644         * Structural information:
645         */
646    
647        Display *display;           /* Display containing window. */
648        TkDisplay *dispPtr;         /* Tk's information about display
649                                     * for window. */
650        int screenNum;              /* Index of screen for window, among all
651                                     * those for dispPtr. */
652        Visual *visual;             /* Visual to use for window.  If not default,
653                                     * MUST be set before X window is created. */
654        int depth;                  /* Number of bits/pixel. */
655        Window window;              /* X's id for window.   NULL means window
656                                     * hasn't actually been created yet, or it's
657                                     * been deleted. */
658        struct TkWindow *childList; /* First in list of child windows,
659                                     * or NULL if no children.  List is in
660                                     * stacking order, lowest window first.*/
661        struct TkWindow *lastChildPtr;
662                                    /* Last in list of child windows (highest
663                                     * in stacking order), or NULL if no
664                                     * children. */
665        struct TkWindow *parentPtr; /* Pointer to parent window (logical
666                                     * parent, not necessarily X parent).  NULL
667                                     * means either this is the main window, or
668                                     * the window's parent has already been
669                                     * deleted. */
670        struct TkWindow *nextPtr;   /* Next higher sibling (in stacking order)
671                                     * in list of children with same parent.  NULL
672                                     * means end of list. */
673        TkMainInfo *mainPtr;        /* Information shared by all windows
674                                     * associated with a particular main
675                                     * window.  NULL means this window is
676                                     * a rogue that isn't associated with
677                                     * any application (at present, this
678                                     * only happens for the dummy windows
679                                     * used for "send" communication).  */
680    
681        /*
682         * Name and type information for the window:
683         */
684    
685        char *pathName;             /* Path name of window (concatenation
686                                     * of all names between this window and
687                                     * its top-level ancestor).  This is a
688                                     * pointer into an entry in
689                                     * mainPtr->nameTable.  NULL means that
690                                     * the window hasn't been completely
691                                     * created yet. */
692        Tk_Uid nameUid;             /* Name of the window within its parent
693                                     * (unique within the parent). */
694        Tk_Uid classUid;            /* Class of the window.  NULL means window
695                                     * hasn't been given a class yet. */
696    
697        /*
698         * Geometry and other attributes of window.  This information
699         * may not be updated on the server immediately;  stuff that
700         * hasn't been reflected in the server yet is called "dirty".
701         * At present, information can be dirty only if the window
702         * hasn't yet been created.
703         */
704    
705        XWindowChanges changes;     /* Geometry and other info about
706                                     * window. */
707        unsigned int dirtyChanges;  /* Bits indicate fields of "changes"
708                                     * that are dirty. */
709        XSetWindowAttributes atts;  /* Current attributes of window. */
710        unsigned long dirtyAtts;    /* Bits indicate fields of "atts"
711                                     * that are dirty. */
712    
713        unsigned int flags;         /* Various flag values:  these are all
714                                     * defined in tk.h (confusing, but they're
715                                     * needed there for some query macros). */
716    
717        /*
718         * Information kept by the event manager (tkEvent.c):
719         */
720    
721        TkEventHandler *handlerList;/* First in list of event handlers
722                                     * declared for this window, or
723                                     * NULL if none. */
724    #ifdef TK_USE_INPUT_METHODS
725        XIC inputContext;           /* Input context (for input methods). */
726    #endif /* TK_USE_INPUT_METHODS */
727    
728        /*
729         * Information used for event bindings (see "bind" and "bindtags"
730         * commands in tkCmds.c):
731         */
732    
733        ClientData *tagPtr;         /* Points to array of tags used for bindings
734                                     * on this window.  Each tag is a Tk_Uid.
735                                     * Malloc'ed.  NULL means no tags. */
736        int numTags;                /* Number of tags at *tagPtr. */
737    
738        /*
739         * Information used by tkOption.c to manage options for the
740         * window.
741         */
742    
743        int optionLevel;            /* -1 means no option information is
744                                     * currently cached for this window.
745                                     * Otherwise this gives the level in
746                                     * the option stack at which info is
747                                     * cached. */
748        /*
749         * Information used by tkSelect.c to manage the selection.
750         */
751    
752        struct TkSelHandler *selHandlerList;
753                                    /* First in list of handlers for
754                                     * returning the selection in various
755                                     * forms. */
756    
757        /*
758         * Information used by tkGeometry.c for geometry management.
759         */
760    
761        Tk_GeomMgr *geomMgrPtr;     /* Information about geometry manager for
762                                     * this window. */
763        ClientData geomData;        /* Argument for geometry manager procedures. */
764        int reqWidth, reqHeight;    /* Arguments from last call to
765                                     * Tk_GeometryRequest, or 0's if
766                                     * Tk_GeometryRequest hasn't been
767                                     * called. */
768        int internalBorderWidth;    /* Width of internal border of window
769                                     * (0 means no internal border).  Geometry
770                                     * managers should not normally place children
771                                     * on top of the border. */
772    
773        /*
774         * Information maintained by tkWm.c for window manager communication.
775         */
776    
777        struct TkWmInfo *wmInfoPtr; /* For top-level windows (and also
778                                     * for special Unix menubar and wrapper
779                                     * windows), points to structure with
780                                     * wm-related info (see tkWm.c).  For
781                                     * other windows, this is NULL. */
782    
783        /*
784         * Information used by widget classes.
785         */
786    
787        TkClassProcs *classProcsPtr;
788        ClientData instanceData;
789    
790        /*
791         * Platform specific information private to each port.
792         */
793    
794        struct TkWindowPrivate *privatePtr;
795    } TkWindow;
796    
797    /*
798     * The following structure is used as a two way map between integers
799     * and strings, usually to map between an internal C representation
800     * and the strings used in Tcl.
801     */
802    
803    typedef struct TkStateMap {
804        int numKey;                 /* Integer representation of a value. */
805        char *strKey;               /* String representation of a value. */
806    } TkStateMap;
807    
808    /*
809     * This structure is used by the Mac and Window porting layers as
810     * the internal representation of a clip_mask in a GC.
811     */
812    
813    typedef struct TkpClipMask {
814        int type;                   /* One of TKP_CLIP_PIXMAP or TKP_CLIP_REGION */
815        union {
816            Pixmap pixmap;
817            TkRegion region;
818        } value;
819    } TkpClipMask;
820    
821    #define TKP_CLIP_PIXMAP 0
822    #define TKP_CLIP_REGION 1
823    
824    /*
825     * Pointer to first entry in list of all displays currently known.
826     */
827    
828    extern TkDisplay *tkDisplayList;
829    
830    /*
831     * Return values from TkGrabState:
832     */
833    
834    #define TK_GRAB_NONE            0
835    #define TK_GRAB_IN_TREE         1
836    #define TK_GRAB_ANCESTOR        2
837    #define TK_GRAB_EXCLUDED        3
838    
839    /*
840     * The macro below is used to modify a "char" value (e.g. by casting
841     * it to an unsigned character) so that it can be used safely with
842     * macros such as isspace.
843     */
844    
845    #define UCHAR(c) ((unsigned char) (c))
846    
847    /*
848     * The following symbol is used in the mode field of FocusIn events
849     * generated by an embedded application to request the input focus from
850     * its container.
851     */
852    
853    #define EMBEDDED_APP_WANTS_FOCUS (NotifyNormal + 20)
854    
855    /*
856     * The following special modifier mask bits are defined, to indicate
857     * logical modifiers such as Meta and Alt that may float among the
858     * actual modifier bits.
859     */
860    
861    #define META_MASK       (AnyModifier<<1)
862    #define ALT_MASK        (AnyModifier<<2)
863    
864    /*
865     * Miscellaneous variables shared among Tk modules but not exported
866     * to the outside world:
867     */
868    
869    extern Tk_SmoothMethod          tkBezierSmoothMethod;
870    extern Tk_ImageType             tkBitmapImageType;
871    extern Tk_PhotoImageFormat      tkImgFmtGIF;
872    extern void                     (*tkHandleEventProc) _ANSI_ARGS_((
873                                        XEvent* eventPtr));
874    extern Tk_PhotoImageFormat      tkImgFmtPPM;
875    extern TkMainInfo               *tkMainWindowList;
876    extern Tk_ImageType             tkPhotoImageType;
877    extern Tcl_HashTable            tkPredefBitmapTable;
878    extern int                      tkSendSerial;
879    
880    #include "tkIntDecls.h"
881    
882    #ifdef BUILD_tk
883    # undef TCL_STORAGE_CLASS
884    # define TCL_STORAGE_CLASS DLLEXPORT
885    #endif
886    
887    /*
888     * Internal procedures shared among Tk modules but not exported
889     * to the outside world:
890     */
891    
892    extern int              Tk_AfterCmd _ANSI_ARGS_((ClientData clientData,
893                                Tcl_Interp *interp, int argc, char **argv));
894    extern int              Tk_BellObjCmd _ANSI_ARGS_((ClientData clientData,
895                                Tcl_Interp *interp, int objc,
896                                Tcl_Obj *CONST objv[]));
897    extern int              Tk_BindCmd _ANSI_ARGS_((ClientData clientData,
898                                Tcl_Interp *interp, int argc, char **argv));
899    extern int              Tk_BindtagsCmd _ANSI_ARGS_((ClientData clientData,
900                                Tcl_Interp *interp, int argc, char **argv));
901    extern int              Tk_ButtonObjCmd _ANSI_ARGS_((ClientData clientData,
902                                Tcl_Interp *interp, int objc,
903                                Tcl_Obj *CONST objv[]));
904    extern int              Tk_CanvasObjCmd _ANSI_ARGS_((ClientData clientData,
905                                Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[]));
906    extern int              Tk_CheckbuttonObjCmd _ANSI_ARGS_((ClientData clientData,
907                                Tcl_Interp *interp, int objc,
908                                Tcl_Obj *CONST objv[]));
909    extern int              Tk_ClipboardCmd _ANSI_ARGS_((ClientData clientData,
910                                Tcl_Interp *interp, int argc, char **argv));
911    extern int              Tk_ChooseColorObjCmd _ANSI_ARGS_((
912                                ClientData clientData, Tcl_Interp *interp,
913                                int objc, Tcl_Obj *CONST objv[]));
914    extern int              Tk_ChooseDirectoryObjCmd _ANSI_ARGS_((
915                                ClientData clientData, Tcl_Interp *interp,
916                                int objc, Tcl_Obj *CONST objv[]));
917    extern int              Tk_ChooseFontObjCmd _ANSI_ARGS_((ClientData clientData,
918                                Tcl_Interp *interp, int objc,
919                                Tcl_Obj *CONST objv[]));
920    extern int              Tk_DestroyObjCmd _ANSI_ARGS_((ClientData clientData,
921                                Tcl_Interp *interp, int objc,
922                                Tcl_Obj *CONST objv[]));
923    extern int              Tk_EntryObjCmd _ANSI_ARGS_((ClientData clientData,
924                                Tcl_Interp *interp, int objc,
925                                Tcl_Obj *CONST objv[]));
926    extern int              Tk_EventObjCmd _ANSI_ARGS_((ClientData clientData,
927                                Tcl_Interp *interp, int objc,
928                                Tcl_Obj *CONST objv[]));
929    extern int              Tk_FileeventCmd _ANSI_ARGS_((ClientData clientData,
930                                Tcl_Interp *interp, int argc, char **argv));
931    extern int              Tk_FrameObjCmd _ANSI_ARGS_((ClientData clientData,
932                                Tcl_Interp *interp, int objc,
933                                Tcl_Obj *CONST objv[]));
934    extern int              Tk_FocusObjCmd _ANSI_ARGS_((ClientData clientData,
935                                Tcl_Interp *interp, int objc,
936                                Tcl_Obj *CONST objv[]));
937    extern int              Tk_FontObjCmd _ANSI_ARGS_((ClientData clientData,
938                                Tcl_Interp *interp, int objc,
939                                Tcl_Obj *CONST objv[]));
940    extern int              Tk_GetOpenFileObjCmd _ANSI_ARGS_((ClientData clientData,
941                                Tcl_Interp *interp, int objc,
942                                Tcl_Obj *CONST objv[]));
943    extern int              Tk_GetSaveFileObjCmd _ANSI_ARGS_((ClientData clientData,
944                                Tcl_Interp *interp, int objc,
945                                Tcl_Obj *CONST objv[]));
946    extern int              Tk_GrabCmd _ANSI_ARGS_((ClientData clientData,
947                                Tcl_Interp *interp, int argc, char **argv));
948    extern int              Tk_GridCmd _ANSI_ARGS_((ClientData clientData,
949                                Tcl_Interp *interp, int argc, char **argv));
950    extern int              Tk_ImageObjCmd _ANSI_ARGS_((ClientData clientData,
951                                Tcl_Interp *interp, int objc,
952                                Tcl_Obj *CONST objv[]));
953    extern int              Tk_LabelObjCmd _ANSI_ARGS_((ClientData clientData,
954                                Tcl_Interp *interp, int objc,
955                                Tcl_Obj *CONST objv[]));
956    extern int              Tk_ListboxObjCmd _ANSI_ARGS_((ClientData clientData,
957                                Tcl_Interp *interp, int objc,
958                                Tcl_Obj *CONST objv[]));
959    extern int              Tk_LowerObjCmd _ANSI_ARGS_((ClientData clientData,
960                                Tcl_Interp *interp, int objc,
961                                Tcl_Obj *CONST objv[]));
962    extern int              Tk_MenubuttonObjCmd _ANSI_ARGS_((ClientData clientData,
963                                Tcl_Interp *interp, int objc,
964                                Tcl_Obj *CONST objv[]));
965    extern int              Tk_MessageBoxObjCmd _ANSI_ARGS_((ClientData clientData,
966                                Tcl_Interp *interp, int objc,
967                                Tcl_Obj *CONST objv[]));
968    extern int              Tk_MessageCmd _ANSI_ARGS_((ClientData clientData,
969                                Tcl_Interp *interp, int argc, char **argv));
970    extern int              Tk_OptionObjCmd _ANSI_ARGS_((ClientData clientData,
971                                Tcl_Interp *interp, int objc,
972                                Tcl_Obj *CONST objv[]));
973    extern int              Tk_PackCmd _ANSI_ARGS_((ClientData clientData,
974                                Tcl_Interp *interp, int argc, char **argv));
975    extern int              Tk_PlaceCmd _ANSI_ARGS_((ClientData clientData,
976                                Tcl_Interp *interp, int argc, char **argv));
977    extern int              Tk_RadiobuttonObjCmd _ANSI_ARGS_((ClientData clientData,
978                                Tcl_Interp *interp, int objc,
979                                Tcl_Obj *CONST objv[]));
980    extern int              Tk_RaiseObjCmd _ANSI_ARGS_((ClientData clientData,
981                                Tcl_Interp *interp, int objc,
982                                Tcl_Obj *CONST objv[]));
983    extern int              Tk_ScaleObjCmd _ANSI_ARGS_((ClientData clientData,
984                                Tcl_Interp *interp, int objc,
985                                Tcl_Obj *CONST objv[]));
986    extern int              Tk_ScrollbarCmd _ANSI_ARGS_((ClientData clientData,
987                                Tcl_Interp *interp, int argc, char **argv));
988    extern int              Tk_SelectionCmd _ANSI_ARGS_((ClientData clientData,
989                                Tcl_Interp *interp, int argc, char **argv));
990    extern int              Tk_SendCmd _ANSI_ARGS_((ClientData clientData,
991                                Tcl_Interp *interp, int argc, char **argv));
992    extern int              Tk_SendObjCmd _ANSI_ARGS_((ClientData clientData,
993                                Tcl_Interp *interp, int objc,
994                                Tcl_Obj *CONST objv[]));
995    extern int              Tk_TextCmd _ANSI_ARGS_((ClientData clientData,
996                                Tcl_Interp *interp, int argc, char **argv));
997    extern int              Tk_TkObjCmd _ANSI_ARGS_((ClientData clientData,
998                                Tcl_Interp *interp, int objc,
999                                Tcl_Obj *CONST objv[]));
1000    extern int              Tk_TkwaitCmd _ANSI_ARGS_((ClientData clientData,
1001                                Tcl_Interp *interp, int argc, char **argv));
1002    extern int              Tk_ToplevelObjCmd _ANSI_ARGS_((ClientData clientData,
1003                                Tcl_Interp *interp, int objc,
1004                                Tcl_Obj *CONST objv[]));
1005    extern int              Tk_UpdateObjCmd _ANSI_ARGS_((ClientData clientData,
1006                                Tcl_Interp *interp, int objc,
1007                                Tcl_Obj *CONST objv[]));
1008    extern int              Tk_WinfoObjCmd _ANSI_ARGS_((ClientData clientData,
1009                                Tcl_Interp *interp, int objc,
1010                                Tcl_Obj *CONST objv[]));
1011    extern int              Tk_WmCmd _ANSI_ARGS_((ClientData clientData,
1012                                Tcl_Interp *interp, int argc, char **argv));
1013    
1014    void    TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,
1015                                int devId, char *buffer, long size));
1016    
1017    extern void             TkEventInit _ANSI_ARGS_((void));
1018    
1019    extern int              TkCreateMenuCmd _ANSI_ARGS_((Tcl_Interp *interp));
1020    extern int              TkDeadAppCmd _ANSI_ARGS_((ClientData clientData,
1021                                Tcl_Interp *interp, int argc, char **argv));
1022    
1023    extern int              TkpTestembedCmd _ANSI_ARGS_((ClientData clientData,
1024                                Tcl_Interp *interp, int argc, char **argv));
1025    extern int              TkCanvasGetCoordObj _ANSI_ARGS_((Tcl_Interp *interp,
1026                                Tk_Canvas canvas, Tcl_Obj *obj,
1027                                double *doublePtr));
1028    extern int              TkCanvasDashParseProc _ANSI_ARGS_((
1029                                ClientData clientData, Tcl_Interp *interp,
1030                                Tk_Window tkwin, CONST char *value, char *widgRec,
1031                                int offset));
1032    extern char *           TkCanvasDashPrintProc _ANSI_ARGS_((
1033                                ClientData clientData, Tk_Window tkwin,
1034                                char *widgRec, int offset,
1035                                Tcl_FreeProc **freeProcPtr));
1036    extern int              TkGetDoublePixels _ANSI_ARGS_((Tcl_Interp *interp,
1037                                Tk_Window tkwin, CONST char *string,
1038                                double *doublePtr));
1039    extern int              TkOffsetParseProc _ANSI_ARGS_((
1040                                ClientData clientData, Tcl_Interp *interp,
1041                                Tk_Window tkwin, CONST char *value, char *widgRec,
1042                                int offset));
1043    extern char *           TkOffsetPrintProc _ANSI_ARGS_((
1044                                ClientData clientData, Tk_Window tkwin,
1045                                char *widgRec, int offset,
1046                                Tcl_FreeProc **freeProcPtr));
1047    extern int              TkOrientParseProc _ANSI_ARGS_((
1048                                ClientData clientData, Tcl_Interp *interp,
1049                                Tk_Window tkwin, CONST char *value,
1050                                char *widgRec, int offset));
1051    extern char *           TkOrientPrintProc _ANSI_ARGS_((
1052                                ClientData clientData, Tk_Window tkwin,
1053                                char *widgRec, int offset,
1054                                Tcl_FreeProc **freeProcPtr));
1055    extern int              TkPixelParseProc _ANSI_ARGS_((
1056                                ClientData clientData, Tcl_Interp *interp,
1057                                Tk_Window tkwin, CONST char *value, char *widgRec,
1058                                int offset));
1059    extern char *           TkPixelPrintProc _ANSI_ARGS_((
1060                                ClientData clientData, Tk_Window tkwin,
1061                                char *widgRec, int offset,
1062                                Tcl_FreeProc **freeProcPtr));
1063    extern int              TkPostscriptImage _ANSI_ARGS_((Tcl_Interp *interp,
1064                                Tk_Window tkwin, Tk_PostscriptInfo psInfo,
1065                                XImage *ximage, int x, int y, int width,
1066                                int height));
1067    extern int              TkSmoothParseProc _ANSI_ARGS_((ClientData clientData,
1068                                Tcl_Interp *interp, Tk_Window tkwin,
1069                                CONST char *value, char *recordPtr, int offset));
1070    extern char *           TkSmoothPrintProc _ANSI_ARGS_((ClientData clientData,
1071                                Tk_Window tkwin, char *recordPtr, int offset,
1072                                Tcl_FreeProc **freeProcPtr));
1073    extern int              TkStateParseProc _ANSI_ARGS_((
1074                                ClientData clientData, Tcl_Interp *interp,
1075                                Tk_Window tkwin, CONST char *value,
1076                                char *widgRec, int offset));
1077    extern char *           TkStatePrintProc _ANSI_ARGS_((
1078                                ClientData clientData, Tk_Window tkwin,
1079                                char *widgRec, int offset,
1080                                Tcl_FreeProc **freeProcPtr));
1081    extern int              TkTileParseProc _ANSI_ARGS_((
1082                                ClientData clientData, Tcl_Interp *interp,
1083                                Tk_Window tkwin, CONST char *value, char *widgRec,
1084                                int offset));
1085    extern char *           TkTilePrintProc _ANSI_ARGS_((
1086                                ClientData clientData, Tk_Window tkwin,
1087                                char *widgRec, int offset,
1088                                Tcl_FreeProc **freeProcPtr));
1089    
1090    /*
1091     * Unsupported commands.
1092     */
1093    extern int              TkUnsupported1Cmd _ANSI_ARGS_((ClientData clientData,
1094                                Tcl_Interp *interp, int argc, char **argv));
1095    
1096    # undef TCL_STORAGE_CLASS
1097    # define TCL_STORAGE_CLASS DLLIMPORT
1098    
1099    #endif  /* _TKINT */
1100    
1101    /* End of tkint.h */

Legend:
Removed from v.44  
changed lines
  Added in v.220

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25