--- generic/bltTkInt.h 2001-12-06 00:30:15.000000000 -0500 +++ generic/bltTkInt.h 2010-01-25 18:57:52.000000000 -0500 @@ -28,213 +28,7 @@ #define _BLT_TKINT_H -typedef struct { - Tk_Uid family; /* Font family. The most important field. */ - int pointsize; /* Pointsize of font, 0 for default size, or - * negative number meaning pixel size. */ - int weight; /* Weight flag; see below for def'n. */ - int slant; /* Slant flag; see below for def'n. */ - int underline; /* Non-zero for underline font. */ - int overstrike; /* Non-zero for overstrike font. */ -} TkFontAttributes; - -typedef struct { - int ascent; /* From baseline to top of font. */ - int descent; /* From baseline to bottom of font. */ - int maxWidth; /* Width of widest character in font. */ - int fixed; /* Non-zero if this is a fixed-width font, - * 0 otherwise. */ -} TkFontMetrics; - - -typedef struct TkFontStruct { - /* - * Fields used and maintained exclusively by generic code. - */ -#if (TK_VERSION_NUMBER >= _VERSION(8,1,0)) - int resourceRefCount; /* Number of active uses of this font (each - * active use corresponds to a call to - * Tk_AllocFontFromTable or Tk_GetFont). - * If this count is 0, then this TkFont - * 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; /* The number of Tcl objects that reference - * this structure. */ -#else - int refCount; /* Number of users of the TkFont. */ -#endif - Tcl_HashEntry *cacheHashPtr;/* Entry in font cache for this structure, - * used when deleting it. */ - Tcl_HashEntry *namedHashPtr;/* Pointer to hash table entry that - * corresponds to the named font that the - * tkfont was based on, or NULL if the tkfont - * was not based on a named font. */ -#if (TK_VERSION_NUMBER >= _VERSION(8,1,0)) - Screen *screen; /* The screen where this font is valid. */ -#endif /* TK_VERSION_NUMBER >= 8.1.0 */ - int tabWidth; /* Width of tabs in this font (pixels). */ - int underlinePos; /* Offset from baseline to origin of - * underline bar (used for drawing underlines - * on a non-underlined font). */ - int underlineHeight; /* Height of underline bar (used for drawing - * underlines on a non-underlined font). */ - - /* - * Fields in the generic font structure that are filled in by - * platform-specific code. - */ - - Font fid; /* For backwards compatibility with XGCValues - * structures. Remove when TkGCValues is - * implemented. */ - TkFontAttributes fa; /* Actual font attributes obtained when the - * the font was created, as opposed to the - * desired attributes passed in to - * TkpGetFontFromAttributes(). The desired - * metrics can be determined from the string - * that was used to create this font. */ - TkFontMetrics fm; /* Font metrics determined when font was - * created. */ -#if (TK_VERSION_NUMBER >= _VERSION(8,1,0)) - struct TkFontStruct *nextPtr; /* Points to the next TkFont structure with - * the same name. All fonts with the - * same name (but different displays) are - * chained together off a single entry in - * a hash table. */ -#endif /* TK_VERSION_NUMBER >= 8.1.0 */ -} TkFont; - -/* - * This structure is used by the Mac and Window porting layers as - * the internal representation of a clip_mask in a GC. - */ -typedef struct TkRegionStruct *TkRegion; - -typedef struct { - 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 - -#ifdef WIN32 -/* - * The TkWinDrawable is the internal implementation of an X Drawable (either - * a Window or a Pixmap). The following constants define the valid Drawable - * types. - */ - -#define TWD_BITMAP 1 -#define TWD_WINDOW 2 -#define TWD_WINDC 3 - -typedef struct TkWindowStruct TkWindow; - -typedef struct { - int type; - HWND handle; - TkWindow *winPtr; -} TkWinWindow; - -typedef struct { - int type; - HBITMAP handle; - Colormap colormap; - int depth; -} TkWinBitmap; - -typedef struct { - int type; - HDC hdc; -} TkWinDC; - -typedef union { - int type; - TkWinWindow window; - TkWinBitmap bitmap; - TkWinDC winDC; -} TkWinDrawable; - -/* - * The TkWinDCState is used to save the state of a device context - * so that it can be restored later. - */ - -typedef struct { - HPALETTE palette; - int bkmode; /* This field was added in Tk - * 8.3.1. Be careful that you don't - * use this structure in a context - * where its size is important. */ -} TkWinDCState; - -extern HDC TkWinGetDrawableDC(Display *display, Drawable drawable, - TkWinDCState * state); -extern HDC TkWinReleaseDrawableDC(Drawable drawable, HDC dc, - TkWinDCState * state); - -extern HWND Tk_GetHWND _ANSI_ARGS_((Window window)); - -extern HINSTANCE Tk_GetHINSTANCE _ANSI_ARGS_((void)); - -extern Window Tk_AttachHWND _ANSI_ARGS_((Tk_Window tkwin, HWND hWnd)); - -#endif /* WIN32 */ - -/* - * The Border structure used internally by the Tk_3D* routines. - * The following is a copy of it from tk3d.c. - */ - -typedef struct TkBorderStruct { - Screen *screen; /* Screen on which the border will be used. */ - Visual *visual; /* Visual for all windows and pixmaps using - * the border. */ - int depth; /* Number of bits per pixel of drawables where - * the border will be used. */ - Colormap colormap; /* Colormap out of which pixels are - * allocated. */ - int refCount; /* Number of different users of - * this border. */ -#if (TK_VERSION_NUMBER >= _VERSION(8,1,0)) - int objRefCount; /* The number of Tcl objects that reference - * this structure. */ -#endif /* TK_VERSION_NUMBER >= 8.1.0 */ - XColor *bgColor; /* Background color (intensity between - * lightColorPtr and darkColorPtr). */ - XColor *darkColor; /* Color for darker areas (must free when - * deleting structure). NULL means shadows - * haven't been allocated yet.*/ - XColor *lightColor; /* Color used for lighter areas of border - * (must free this when deleting structure). - * NULL means shadows haven't been allocated - * yet. */ - Pixmap shadow; /* Stipple pattern to use for drawing - * shadows areas. Used for displays with - * <= 64 colors or where colormap has filled - * up. */ - GC bgGC; /* Used (if necessary) to draw areas in - * the background color. */ - GC darkGC; /* Used to draw darker parts of the - * border. None means the shadow colors - * haven't been allocated yet.*/ - GC lightGC; /* Used to draw lighter parts of - * the border. None means the shadow colors - * haven't been allocated yet. */ - Tcl_HashEntry *hashPtr; /* Entry in borderTable (needed in - * order to delete structure). */ - struct TkBorderStruct *nextPtr; /* Points to the next TkBorder structure with - * the same color name. Borders with the - * same name but different screens or - * colormaps are chained together off a - * single entry in borderTable. */ -} TkBorder; +#include +#include +#include #endif /* BLT_TKINT_H */ --- generic/bltWindow.c 2010-06-04 02:21:46.000000000 -0400 +++ generic/bltWindow.c 2013-11-19 21:51:34.000000000 -0500 @@ -34,23 +34,5 @@ #endif -typedef struct TkIdStackStruct TkIdStack; -typedef struct TkErrorHandlerStruct TkErrorHandler; -typedef struct TkSelectionInfoStruct TkSelectionInfo; -typedef struct TkClipboardTargetStruct TkClipboardTarget; - -#ifndef WIN32 -typedef struct TkWindowStruct TkWindow; -#endif -typedef struct TkWindowEventStruct TkWindowEvent; -typedef struct TkMainInfoStruct TkMainInfo; -typedef struct TkEventHandlerStruct TkEventHandler; -typedef struct TkSelHandlerStruct TkSelHandler; -typedef struct TkWinInfoStruct TkWinInfo; -typedef struct TkClassProcsStruct TkClassProcs; -typedef struct TkWindowPrivateStruct TkWindowPrivate; -typedef struct TkGrabEventStruct TkGrabEvent; -typedef struct TkColormapStruct TkColormap; -typedef struct TkStressedCmapStruct TkStressedCmap; -typedef struct TkWmInfoStruct TkWmInfo; +#include #ifdef XNQueryInputStyle @@ -71,764 +53,4 @@ #endif -#if (TK_VERSION_NUMBER >= _VERSION(8,1,0)) - -typedef struct TkCaret { - struct TkWindow *winPtr; /* the window on which we requested caret - * placement */ - int x; /* relative x coord of the caret */ - int y; /* relative y coord of the caret */ - int height; /* specified height of the window */ -} TkCaret; - -/* - * 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 TkDisplayStruct { - Display *display; /* Xlib's info about display. */ - struct TkDisplayStruct *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_Uids 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. */ -#if (TK_VERSION_NUMBER >= _VERSION(8,4,0)) - Atom utf8Atom; -#endif - 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. */ -#if (TK_VERSION_NUMBER < _VERSION(8,4,0)) - int idCleanupScheduled; /* 1 means a call to WindowIdCleanup has - * already been scheduled, 0 means it - * hasn't. */ -#else - Tcl_TimerToken idCleanupScheduled; - /* If set, it means a call to WindowIdCleanup - * has already been scheduled, 0 means it - * hasn't. */ -#endif - /* - * Information used by tkUnixWm.c and tkWinWm.c only: - */ - -#if (TK_VERSION_NUMBER < _VERSION(8,4,0)) - 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. */ -#endif - 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 */ - XIMStyle inputStyle; /* Input style selected for this display. */ -#if (TK_VERSION_NUMBER >= _VERSION(8,4,0)) -#if TK_XIM_SPOT - XFontSet inputXfs; /* XFontSet cached for over-the-spot XIM. */ -#endif /* TK_XIM_SPOT */ -#endif /* TK_VERSION_NUMBER >= 8.4 */ -#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 */ - Window mouseButtonWindow; /* Window the button state was set in, added - * in Tk 8.4. */ -#if (TK_VERSION_NUMBER < _VERSION(8,4,0)) - int warpInProgress; -#endif - Window warpWindow; - int warpX; - int warpY; -#if (TK_VERSION_NUMBER < _VERSION(8,4,0)) - int useInputMethods; /* Whether to use input methods */ -#else - /* - * The following field(s) were all added for Tk8.4 - */ -/* long deletionEpoch; * Incremented by window deletions */ - unsigned int flags; /* Various flag values: these are all - * defined in below. */ - TkCaret caret; /* information about the caret for this - * display. This is not a pointer. */ - - int iconDataSize; /* Size of default iconphoto image data. */ - unsigned char *iconDataPtr; /* Default iconphoto image data, if set. */ - -#endif -} TkDisplay; - -#else - -/* - * One of the following structures is maintained for each display - * containing a window managed by Tk: - */ -typedef struct TkDisplayStruct { - Display *display; /* Xlib's info about display. */ - struct TkDisplayStruct *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 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 tkError.c only: - */ - - 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. */ - - /* - * 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 tkSelect.c and tkClipboard.c only: - */ - - 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. */ - TkMainInfo *clipboardAppPtr; - /* Last application that owned clipboard. */ - 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 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 by tkCursor.c only: - */ - - Font cursorFont; /* Font to use for standard cursors. - * None means font not loaded yet. */ - - /* - * Information used by tkGrab.c only: - */ - - TkWindow *grabWinPtr; - /* Window in which the pointer is currently - * grabbed, or NULL if none. */ - TkWindow *eventualGrabWinPtr; - /* Value that grabWinPtr will have once the - * grab event queue (below) has been - * completely emptied. */ - TkWindow *buttonWinPtr; - /* Window in which first mouse button was - * pressed while grab was in effect, or NULL - * if no such press in effect. */ - 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 tkXId.c only: - */ - - 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. */ - 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 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. */ - - /* - * Information used by tkFocus.c only: - */ -#if (TK_MAJOR_VERSION == 4) - - TkWindow *focusWinPtr; - /* Window that currently has the focus for - * this display, or NULL if none. */ - 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. */ - TkWindow *focusOnMapPtr; - /* This points to a toplevel window that is - * supposed to receive the X input focus as - * soon as it is mapped (needed to handle the - * fact that X won't allow the focus on an - * unmapped window). NULL means no delayed - * focus op in progress. */ - int forceFocus; /* Associated with focusOnMapPtr: non-zero - * means claim the focus even if some other - * application currently has it. */ -#else - 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. */ - 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. */ -#endif /* TK_MAJOR_VERSION == 4 */ - - /* - * Used by tkColor.c only: - */ - - TkStressedCmap *stressPtr; /* First in list of colormaps that have - * filled up, so we have to pick an - * approximate color. */ - - /* - * Used by tkEvent.c only: - */ - - 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. */ - /* - * 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. */ -#if (TK_MAJOR_VERSION > 4) - 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. - */ -#endif /* TK_MAJOR_VERSION > 4 */ - -} TkDisplay; - -#endif /* TK_VERSION_NUMBER >= _VERSION(8,1,0) */ - - -struct TkWindowStruct { - Display *display; - TkDisplay *dispPtr; - int screenNum; - Visual *visual; - int depth; - Window window; - TkWindow *childList; - TkWindow *lastChildPtr; - TkWindow *parentPtr; - TkWindow *nextPtr; - TkMainInfo *infoPtr; - char *pathName; - Tk_Uid nameUid; - Tk_Uid classUid; - XWindowChanges changes; - unsigned int dirtyChanges; - XSetWindowAttributes atts; - unsigned long dirtyAtts; - unsigned int flags; - TkEventHandler *handlerList; -#ifdef TK_USE_INPUT_METHODS - XIC inputContext; -#endif /* TK_USE_INPUT_METHODS */ - ClientData *tagPtr; - int nTags; - int optionLevel; - TkSelHandler *selHandlerList; - Tk_GeomMgr *geomMgrPtr; - ClientData geomData; - int reqWidth, reqHeight; - int internalBorderWidth; - TkWinInfo *wmInfoPtr; -#if (TK_MAJOR_VERSION > 4) - TkClassProcs *classProcsPtr; - ClientData instanceData; -#endif - TkWindowPrivate *privatePtr; - int internalBorderRight; - int internalBorderTop; - int internalBorderBottom; - - int minReqWidth; - int minReqHeight; - -}; - #ifdef WIN32 /* --- generic/bltPs.c 2002-09-18 18:30:51.000000000 -0400 +++ generic/bltPs.c 2010-01-25 19:04:13.000000000 -0500 @@ -894,5 +894,5 @@ } if ((relief == TK_RELIEF_SOLID) || - (borderPtr->lightColor == NULL) || (borderPtr->darkColor == NULL)) { + (borderPtr->lightColorPtr == NULL) || (borderPtr->darkColorPtr == NULL)) { if (relief == TK_RELIEF_SOLID) { darkColor.red = darkColor.blue = darkColor.green = 0x00; @@ -902,5 +902,5 @@ Screen *screenPtr; - lightColor = *borderPtr->bgColor; + lightColor = *borderPtr->bgColorPtr; screenPtr = Tk_Screen(tokenPtr->tkwin); if (lightColor.pixel == WhitePixelOfScreen(screenPtr)) { @@ -913,6 +913,6 @@ darkColorPtr = &darkColor; } else { - lightColorPtr = borderPtr->lightColor; - darkColorPtr = borderPtr->darkColor; + lightColorPtr = borderPtr->lightColorPtr; + darkColorPtr = borderPtr->darkColorPtr; } @@ -943,5 +943,5 @@ bottomColor = lightColorPtr; } else { - topColor = bottomColor = borderPtr->bgColor; + topColor = bottomColor = borderPtr->bgColorPtr; } Blt_BackgroundToPostScript(tokenPtr, bottomColor); @@ -983,5 +983,5 @@ * the plot when the colormode option is "monochrome". */ - Blt_BackgroundToPostScript(tokenPtr, borderPtr->bgColor); + Blt_BackgroundToPostScript(tokenPtr, borderPtr->bgColorPtr); Blt_RectangleToPostScript(tokenPtr, x, y, width, height); Blt_Draw3DRectangleToPostScript(tokenPtr, border, x, y, width, height, --- generic/bltText.c 2002-08-13 15:45:20.000000000 -0400 +++ generic/bltText.c 2010-01-25 20:08:01.000000000 -0500 @@ -691,5 +691,5 @@ XColor *color1, *color2; - color1 = borderPtr->lightColor, color2 = borderPtr->darkColor; + color1 = borderPtr->lightColorPtr, color2 = borderPtr->darkColorPtr; if (tsPtr->state & STATE_EMPHASIS) { XColor *hold; @@ -755,5 +755,5 @@ XColor *color1, *color2; - color1 = borderPtr->lightColor, color2 = borderPtr->darkColor; + color1 = borderPtr->lightColorPtr, color2 = borderPtr->darkColorPtr; if (tsPtr->state & STATE_EMPHASIS) { XColor *hold; --- generic/tkFrame.c 2002-10-16 01:33:53.000000000 -0400 +++ generic/tkFrame.c 2010-01-25 21:36:58.000000000 -0500 @@ -117,5 +117,5 @@ * definitions. */ Blt_Tile tile; -} Frame; +} bltFrame; /* @@ -144,8 +144,8 @@ { {TK_CONFIG_BORDER, "-background", "background", "Background", - DEF_FRAME_BACKGROUND, Tk_Offset(Frame, border), + DEF_FRAME_BACKGROUND, Tk_Offset(bltFrame, border), BOTH | TK_CONFIG_COLOR_ONLY | TK_CONFIG_NULL_OK}, {TK_CONFIG_BORDER, "-background", "background", "Background", - DEF_FRAME_BG_MONO, Tk_Offset(Frame, border), + DEF_FRAME_BG_MONO, Tk_Offset(bltFrame, border), BOTH | TK_CONFIG_MONO_ONLY | TK_CONFIG_NULL_OK}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *)NULL, @@ -154,53 +154,53 @@ (char *)NULL, 0, BOTH}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_FRAME_BORDERWIDTH, Tk_Offset(Frame, borderWidth), BOTH}, + DEF_FRAME_BORDERWIDTH, Tk_Offset(bltFrame, borderWidth), BOTH}, {TK_CONFIG_STRING, "-class", "class", "Class", - DEF_FRAME_CLASS, Tk_Offset(Frame, className), FRAME}, + DEF_FRAME_CLASS, Tk_Offset(bltFrame, className), FRAME}, {TK_CONFIG_STRING, "-class", "class", "Class", - DEF_TOPLEVEL_CLASS, Tk_Offset(Frame, className), TOPLEVEL}, + DEF_TOPLEVEL_CLASS, Tk_Offset(bltFrame, className), TOPLEVEL}, {TK_CONFIG_STRING, "-colormap", "colormap", "Colormap", - DEF_FRAME_COLORMAP, Tk_Offset(Frame, colormapName), + DEF_FRAME_COLORMAP, Tk_Offset(bltFrame, colormapName), BOTH | TK_CONFIG_NULL_OK}, #if (TK_MAJOR_VERSION > 4) {TK_CONFIG_BOOLEAN, "-container", "container", "Container", - DEF_FRAME_CONTAINER, Tk_Offset(Frame, isContainer), BOTH}, + DEF_FRAME_CONTAINER, Tk_Offset(bltFrame, isContainer), BOTH}, #endif /* TK_MAJOR_VERSION > 4 */ {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", - DEF_FRAME_CURSOR, Tk_Offset(Frame, cursor), BOTH | TK_CONFIG_NULL_OK}, + DEF_FRAME_CURSOR, Tk_Offset(bltFrame, cursor), BOTH | TK_CONFIG_NULL_OK}, {TK_CONFIG_PIXELS, "-height", "height", "Height", - DEF_FRAME_HEIGHT, Tk_Offset(Frame, height), BOTH}, + DEF_FRAME_HEIGHT, Tk_Offset(bltFrame, height), BOTH}, {TK_CONFIG_COLOR, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_FRAME_HIGHLIGHT_BG, - Tk_Offset(Frame, highlightBgColorPtr), BOTH}, + Tk_Offset(bltFrame, highlightBgColorPtr), BOTH}, {TK_CONFIG_COLOR, "-highlightcolor", "highlightColor", "HighlightColor", - DEF_FRAME_HIGHLIGHT, Tk_Offset(Frame, highlightColorPtr), BOTH}, + DEF_FRAME_HIGHLIGHT, Tk_Offset(bltFrame, highlightColorPtr), BOTH}, {TK_CONFIG_PIXELS, "-highlightthickness", "highlightThickness", "HighlightThickness", - DEF_FRAME_HIGHLIGHT_WIDTH, Tk_Offset(Frame, highlightWidth), BOTH}, + DEF_FRAME_HIGHLIGHT_WIDTH, Tk_Offset(bltFrame, highlightWidth), BOTH}, #if (TK_MAJOR_VERSION > 4) {TK_CONFIG_STRING, "-menu", "menu", "Menu", - DEF_TOPLEVEL_MENU, Tk_Offset(Frame, menuName), + DEF_TOPLEVEL_MENU, Tk_Offset(bltFrame, menuName), TOPLEVEL | TK_CONFIG_NULL_OK}, #endif /* TK_MAJOR_VERSION > 4 */ {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", - DEF_FRAME_RELIEF, Tk_Offset(Frame, relief), BOTH}, + DEF_FRAME_RELIEF, Tk_Offset(bltFrame, relief), BOTH}, {TK_CONFIG_STRING, "-screen", "screen", "Screen", - DEF_TOPLEVEL_SCREEN, Tk_Offset(Frame, screenName), + DEF_TOPLEVEL_SCREEN, Tk_Offset(bltFrame, screenName), TOPLEVEL | TK_CONFIG_NULL_OK}, {TK_CONFIG_STRING, "-takefocus", "takeFocus", "TakeFocus", - DEF_FRAME_TAKE_FOCUS, Tk_Offset(Frame, takeFocus), + DEF_FRAME_TAKE_FOCUS, Tk_Offset(bltFrame, takeFocus), BOTH | TK_CONFIG_NULL_OK}, {TK_CONFIG_CUSTOM, "-tile", "tile", "Tile", - (char *)NULL, Tk_Offset(Frame, tile), BOTH | TK_CONFIG_NULL_OK, + (char *)NULL, Tk_Offset(bltFrame, tile), BOTH | TK_CONFIG_NULL_OK, &bltTileOption}, #if (TK_MAJOR_VERSION > 4) {TK_CONFIG_STRING, "-use", "use", "Use", - DEF_FRAME_USE, Tk_Offset(Frame, useThis), TOPLEVEL|TK_CONFIG_NULL_OK}, + DEF_FRAME_USE, Tk_Offset(bltFrame, useThis), TOPLEVEL|TK_CONFIG_NULL_OK}, #endif {TK_CONFIG_STRING, "-visual", "visual", "Visual", - DEF_FRAME_VISUAL, Tk_Offset(Frame, visualName), + DEF_FRAME_VISUAL, Tk_Offset(bltFrame, visualName), BOTH | TK_CONFIG_NULL_OK}, {TK_CONFIG_PIXELS, "-width", "width", "Width", - DEF_FRAME_WIDTH, Tk_Offset(Frame, width), BOTH}, + DEF_FRAME_WIDTH, Tk_Offset(bltFrame, width), BOTH}, {TK_CONFIG_END, (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL, 0, 0} @@ -212,5 +212,5 @@ static int ConfigureFrame _ANSI_ARGS_((Tcl_Interp *interp, - Frame * framePtr, int argc, char **argv, + bltFrame * framePtr, int argc, CONST84 char **argv, int flags)); static void DestroyFrame _ANSI_ARGS_((DestroyData *memPtr)); @@ -220,25 +220,14 @@ static void FrameEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); -static int FrameWidgetCmd _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, int argc, char **argv)); static void MapFrame _ANSI_ARGS_((ClientData clientData)); static Blt_TileChangedProc TileChangedProc; -static Tcl_CmdProc FrameCmd, ToplevelCmd; +static Tcl_CmdProc FrameCmd, ToplevelCmd, FrameWidgetCmd; -#ifdef TILE_MAINWINDOW -EXTERN -#else static -#endif -int TkCreateFrame _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, int argc, char **argv, +int BltCreateFrame _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int argc, CONST84 char **argv, int toplevel, char *appName)); -EXTERN void TkSetWindowMenuBar _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, - char *oldMenuName, char *menuName)); - -EXTERN Tk_Window TkCreateMainWindow _ANSI_ARGS_((Tcl_Interp * interp, - char * screenName, char * baseName)); #if (TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION > 3) #define TkSetClassProcs Tk_SetClassProcs @@ -250,6 +239,6 @@ +#if (TCL_VERSION_NUMBER < _VERSION(8,6,0)) EXTERN void TkpSetMainMenubar _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, char * menuName)); +#endif -EXTERN int TkpUseWindow _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, - char * string)); EXTERN void TkpMakeContainer _ANSI_ARGS_((Tk_Window tkwin)); @@ -280,7 +267,7 @@ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ - char **argv; /* Argument strings. */ + CONST84 char **argv; /* Argument strings. */ { - return TkCreateFrame(clientData, interp, argc, argv, 0, (char *)NULL); + return BltCreateFrame(clientData, interp, argc, argv, 0, (char *)NULL); } @@ -291,7 +278,7 @@ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ - char **argv; /* Argument strings. */ + CONST84 char **argv; /* Argument strings. */ { - return TkCreateFrame(clientData, interp, argc, argv, 1, (char *)NULL); + return BltCreateFrame(clientData, interp, argc, argv, 1, (char *)NULL); } @@ -320,5 +307,5 @@ #endif /* TILE_MAINWINDOW */ int -TkCreateFrame(clientData, interp, argc, argv, toplevel, appName) +BltCreateFrame(clientData, interp, argc, argv, toplevel, appName) ClientData clientData; /* Main window associated with interpreter. * If we're called by Tk_Init to create a @@ -326,5 +313,5 @@ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ - char **argv; /* Argument strings. */ + CONST84 char *argv[]; /* Argument strings. */ int toplevel; /* Non-zero means create a toplevel window, * zero means create a frame. */ @@ -333,5 +320,5 @@ * new application. */ { - Frame *framePtr; + bltFrame *framePtr; Tk_Window new; char *className, *screenName, *visualName, *colormapName, *arg, *useOption; @@ -408,5 +395,5 @@ if (appName == NULL) { - panic("TkCreateFrame didn't get application name"); + panic("BltCreateFrame didn't get application name"); } new = (Tk_Window)TkCreateMainWindow(interp, screenName, appName); @@ -468,5 +455,5 @@ */ - framePtr = Blt_Malloc(sizeof(Frame)); + framePtr = Blt_Malloc(sizeof(bltFrame)); framePtr->tkwin = new; framePtr->display = Tk_Display(new); @@ -559,7 +546,7 @@ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ - char **argv; /* Argument strings. */ + CONST84 char *argv[]; /* Argument strings. */ { - register Frame *framePtr = (Frame *) clientData; + register bltFrame *framePtr = (bltFrame *) clientData; int result; size_t length; @@ -661,5 +648,5 @@ DestroyData *memPtr; /* Info about frame widget. */ { - register Frame *framePtr = (Frame *) memPtr; + register bltFrame *framePtr = (bltFrame *) memPtr; Tk_FreeOptions(configSpecs, (char *)framePtr, framePtr->display, @@ -690,5 +677,5 @@ Blt_Tile tile; { - Frame *framePtr = (Frame *) clientData; + bltFrame *framePtr = (bltFrame *) clientData; if (framePtr->tkwin != NULL) { @@ -724,8 +711,8 @@ ConfigureFrame(interp, framePtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ - register Frame *framePtr; /* Information about widget; may or may + register bltFrame *framePtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ - char **argv; /* Arguments. */ + CONST84 char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { @@ -811,5 +798,5 @@ ClientData clientData; /* Information about widget. */ { - register Frame *framePtr = (Frame *) clientData; + register bltFrame *framePtr = (bltFrame *) clientData; register Tk_Window tkwin = framePtr->tkwin; GC gc; @@ -878,5 +865,5 @@ register XEvent *eventPtr; /* Information about event. */ { - register Frame *framePtr = (Frame *) clientData; + register bltFrame *framePtr = (bltFrame *) clientData; if (((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) @@ -965,5 +952,5 @@ ClientData clientData; /* Pointer to widget record for widget. */ { - Frame *framePtr = (Frame *) clientData; + bltFrame *framePtr = (bltFrame *) clientData; Tk_Window tkwin = framePtr->tkwin; @@ -1011,5 +998,5 @@ ClientData clientData; /* Pointer to frame structure. */ { - Frame *framePtr = (Frame *) clientData; + bltFrame *framePtr = (bltFrame *) clientData; /* @@ -1068,7 +1055,7 @@ #define Tk_MainPtr(tkwin) (((Tk_FakeWin *)(tkwin))->dummy5) if (Tk_MainPtr(tkwin) != NULL) { - Frame *framePtr; + bltFrame *framePtr; - framePtr = (Frame *) Tk_InstanceData(tkwin); + framePtr = (bltFrame *) Tk_InstanceData(tkwin); TkpMenuNotifyToplevelCreate(framePtr->interp, framePtr->menuName); }