diff options
Diffstat (limited to 'generic/tkMenu.h')
-rw-r--r-- | generic/tkMenu.h | 543 |
1 files changed, 265 insertions, 278 deletions
diff --git a/generic/tkMenu.h b/generic/tkMenu.h index 767e3fc..24f32e7 100644 --- a/generic/tkMenu.h +++ b/generic/tkMenu.h @@ -1,12 +1,13 @@ /* * tkMenu.h -- * - * Declarations shared among all of the files that implement menu widgets. + * Declarations shared among all of the files that implement menu + * widgets. * * Copyright (c) 1996-1998 by Sun Microsystems, Inc. * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. */ #ifndef _TKMENU @@ -37,26 +38,41 @@ typedef struct TkMenuPlatformData_ *TkMenuPlatformData; typedef struct TkMenuPlatformEntryData_ *TkMenuPlatformEntryData; /* - * Legal values for the "compound" field of TkMenuEntry and TkMenuButton records. + * Legal values for the "compound" field of TkMenuEntry and TkMenuButton + * records. */ enum compound { COMPOUND_BOTTOM, COMPOUND_CENTER, COMPOUND_LEFT, COMPOUND_NONE, - COMPOUND_RIGHT, COMPOUND_TOP + COMPOUND_RIGHT, COMPOUND_TOP }; /* - * One of the following data structures is kept for each entry of each - * menu managed by this file: + * Additional menu entry drawing parameters for Windows platform. + * DRAW_MENU_ENTRY_ARROW makes TkpDrawMenuEntry draw the arrow + * itself when cascade entry is disabled. + * DRAW_MENU_ENTRY_NOUNDERLINE forbids underline when ODS_NOACCEL + * is set, thus obeying the system-wide Windows UI setting. + */ + +enum drawingParameters { + DRAW_MENU_ENTRY_ARROW = (1<<0), + DRAW_MENU_ENTRY_NOUNDERLINE = (1<<1) +}; + +/* + * One of the following data structures is kept for each entry of each menu + * managed by this file: */ typedef struct TkMenuEntry { - int type; /* Type of menu entry; see below for - * valid types. */ - struct TkMenu *menuPtr; /* Menu with which this entry is associated. */ + int type; /* Type of menu entry; see below for valid + * types. */ + struct TkMenu *menuPtr; /* Menu with which this entry is + * associated. */ Tk_OptionTable optionTable; /* Option table for this menu entry. */ - Tcl_Obj *labelPtr; /* Main text label displayed in entry (NULL - * if no label). */ + Tcl_Obj *labelPtr; /* Main text label displayed in entry (NULL if + * no label). */ int labelLength; /* Number of non-NULL characters in label. */ int state; /* State of button for display purposes: * normal, active, or disabled. */ @@ -66,19 +82,18 @@ typedef struct TkMenuEntry { Tcl_Obj *underlinePtr; /* Index of character to underline. */ Tcl_Obj *bitmapPtr; /* Bitmap to display in menu entry, or None. * If not None then label is ignored. */ - Tcl_Obj *imagePtr; /* Name of image to display, or - * NULL. If non-NULL, bitmap, text, and - * textVarName are ignored. */ + Tcl_Obj *imagePtr; /* Name of image to display, or NULL. If not + * NULL, bitmap, text, and textVarName are + * ignored. */ Tk_Image image; /* Image to display in menu entry, or NULL if * none. */ - Tcl_Obj *selectImagePtr; /* Name of image to display when selected, or + Tcl_Obj *selectImagePtr; /* Name of image to display when selected, or * NULL. */ - Tk_Image selectImage; /* Image to display in entry when selected, - * or NULL if none. Ignored if image is - * NULL. */ - Tcl_Obj *accelPtr; /* Accelerator string displayed at right - * of menu entry. NULL means no such - * accelerator. Malloc'ed. */ + Tk_Image selectImage; /* Image to display in entry when selected, or + * NULL if none. Ignored if image is NULL. */ + Tcl_Obj *accelPtr; /* Accelerator string displayed at right of + * menu entry. NULL means no such accelerator. + * Malloc'ed. */ int accelLength; /* Number of non-NULL characters in * accelerator. */ int indicatorOn; /* True means draw indicator, false means @@ -89,42 +104,43 @@ typedef struct TkMenuEntry { */ Tcl_Obj *borderPtr; /* Structure used to draw background for - * entry. NULL means use overall border - * for menu. */ - Tcl_Obj *fgPtr; /* Foreground color to use for entry. NULL + * entry. NULL means use overall border for + * menu. */ + Tcl_Obj *fgPtr; /* Foreground color to use for entry. NULL * means use foreground color from menu. */ Tcl_Obj *activeBorderPtr; /* Used to draw background and border when - * element is active. NULL means use + * element is active. NULL means use * activeBorder from menu. */ Tcl_Obj *activeFgPtr; /* Foreground color to use when entry is - * active. NULL means use active foreground + * active. NULL means use active foreground * from menu. */ Tcl_Obj *indicatorFgPtr; /* Color for indicators in radio and check - * button entries. NULL means use indicatorFg + * button entries. NULL means use indicatorFg * GC from menu. */ - Tcl_Obj *fontPtr; /* Text font for menu entries. NULL means - * use overall font for menu. */ - int columnBreak; /* If this is 0, this item appears below - * the item in front of it. If this is - * 1, this item starts a new column. This - * field is always 0 for tearoff and separator + Tcl_Obj *fontPtr; /* Text font for menu entries. NULL means use + * overall font for menu. */ + int columnBreak; /* If this is 0, this item appears below the + * item in front of it. If this is 1, this + * item starts a new column. This field is + * always 0 for tearoff and separator * entries. */ int hideMargin; /* If this is 0, then the item has enough * margin to accomodate a standard check mark * and a default right margin. If this is 1, - * then the item has no such margins. and + * then the item has no such margins, and * checkbuttons and radiobuttons with this set - * will have a rectangle drawn in the indicator - * around the item if the item is checked. This - * is useful for palette menus. This field is - * ignored for separators and tearoffs. */ + * will have a rectangle drawn in the + * indicator around the item if the item is + * checked. This is useful for palette menus. + * This field is ignored for separators and + * tearoffs. */ int indicatorSpace; /* The width of the indicator space for this * entry. */ int labelWidth; /* Number of pixels to allow for displaying * labels in menu entries. */ - int compound; /* Value of -compound option; specifies whether - * the entry should show both an image and - * text, and, if so, how. */ + int compound; /* Value of -compound option; specifies + * whether the entry should show both an image + * and text, and, if so, how. */ /* * Information used to implement this entry's action: @@ -134,78 +150,76 @@ typedef struct TkMenuEntry { * Malloc'ed. */ Tcl_Obj *namePtr; /* Name of variable (for check buttons and * radio buttons) or menu (for cascade - * entries). Malloc'ed.*/ + * entries). Malloc'ed. */ Tcl_Obj *onValuePtr; /* Value to store in variable when selected * (only for radio and check buttons). * Malloc'ed. */ Tcl_Obj *offValuePtr; /* Value to store in variable when not * selected (only for check buttons). * Malloc'ed. */ - + /* * Information used for drawing this menu entry. */ - + int width; /* Number of pixels occupied by entry in - * horizontal dimension. Not used except - * in menubars. The width of norma menus - * is dependent on the rest of the menu. */ - int x; /* X-coordinate of leftmost pixel in entry */ + * horizontal dimension. Not used except in + * menubars. The width of norma menus is + * dependent on the rest of the menu. */ + int x; /* X-coordinate of leftmost pixel in entry. */ int height; /* Number of pixels occupied by entry in - * vertical dimension, including raised - * border drawn around entry when active. */ + * vertical dimension, including raised border + * drawn around entry when active. */ int y; /* Y-coordinate of topmost pixel in entry. */ - GC textGC; /* GC for drawing text in entry. NULL means + GC textGC; /* GC for drawing text in entry. NULL means * use overall textGC for menu. */ GC activeGC; /* GC for drawing text in entry when active. * NULL means use overall activeGC for * menu. */ GC disabledGC; /* Used to produce disabled effect for entry. - * NULL means use overall disabledGC from - * menu structure. See comments for - * disabledFg in menu structure for more - * information. */ - GC indicatorGC; /* For drawing indicators. None means use - * GC from menu. */ + * NULL means use overall disabledGC from menu + * structure. See comments for disabledFg in + * menu structure for more information. */ + GC indicatorGC; /* For drawing indicators. None means use GC + * from menu. */ /* * Miscellaneous fields. */ - - int entryFlags; /* Various flags. See below for - definitions. */ - int index; /* Need to know which index we are. This - * is zero-based. This is the top-left entry - * of the menu. */ - + + int entryFlags; /* Various flags. See below for + * definitions. */ + int index; /* Need to know which index we are. This is + * zero-based. This is the top-left entry of + * the menu. */ + /* * Bookeeping for master menus and cascade menus. */ - + struct TkMenuReferences *childMenuRefPtr; - /* A pointer to the hash table entry for - * the child menu. Stored here when the menu - * entry is configured so that a hash lookup - * is not necessary later.*/ + /* A pointer to the hash table entry for the + * child menu. Stored here when the menu entry + * is configured so that a hash lookup is not + * necessary later.*/ struct TkMenuEntry *nextCascadePtr; /* The next cascade entry that is a parent of - * this entry's child cascade menu. NULL - * end of list, this is not a cascade entry, - * or the menu that this entry point to - * does not yet exist. */ + * this entry's child cascade menu. NULL end + * of list, this is not a cascade entry, or + * the menu that this entry point to does not + * yet exist. */ TkMenuPlatformEntryData platformEntryData; /* The data for the specific type of menu. - * Depends on platform and menu type what - * kind of options are in this structure. - */ + * Depends on platform and menu type what kind + * of options are in this structure. */ } TkMenuEntry; /* * Flag values defined for menu entries: * - * ENTRY_SELECTED: Non-zero means this is a radio or check - * button and that it should be drawn in - * the "selected" state. + * ENTRY_SELECTED: Non-zero means this is a radio or check button + * and that it should be drawn in the "selected" + * state. * ENTRY_NEEDS_REDISPLAY: Non-zero means the entry should be redisplayed. * ENTRY_LAST_COLUMN: Used by the drawing code. If the entry is in * the last column, the space to its right needs @@ -238,44 +252,43 @@ typedef struct TkMenuEntry { * Menu states */ -EXTERN char *tkMenuStateStrings[]; +MODULE_SCOPE char *tkMenuStateStrings[]; #define ENTRY_ACTIVE 0 #define ENTRY_NORMAL 1 #define ENTRY_DISABLED 2 /* - * A data structure of the following type is kept for each - * menu widget: + * A data structure of the following type is kept for each menu widget: */ typedef struct TkMenu { - Tk_Window tkwin; /* Window that embodies the pane. NULL - * means that the window has been destroyed - * but the data structures haven't yet been - * cleaned up.*/ - Display *display; /* Display containing widget. Needed, among + Tk_Window tkwin; /* Window that embodies the pane. NULL means + * that the window has been destroyed but the + * data structures haven't yet been cleaned + * up. */ + Display *display; /* Display containing widget. Needed, among * other things, so that resources can be * freed up even after tkwin has gone away. */ Tcl_Interp *interp; /* Interpreter associated with menu. */ Tcl_Command widgetCmd; /* Token for menu's widget command. */ - TkMenuEntry **entries; /* Array of pointers to all the entries - * in the menu. NULL means no entries. */ + TkMenuEntry **entries; /* Array of pointers to all the entries in the + * menu. NULL means no entries. */ int numEntries; /* Number of elements in entries. */ - int active; /* Index of active entry. -1 means - * nothing active. */ - int menuType; /* MASTER_MENU, TEAROFF_MENU, or MENUBAR. - * See below for definitions. */ - Tcl_Obj *menuTypePtr; /* Used to control whether created tkwin - * is a toplevel or not. "normal", "menubar", - * or "toplevel" */ + int active; /* Index of active entry. -1 means nothing + * active. */ + int menuType; /* MASTER_MENU, TEAROFF_MENU, or MENUBAR. See + * below for definitions. */ + Tcl_Obj *menuTypePtr; /* Used to control whether created tkwin is a + * toplevel or not. "normal", "menubar", or + * "toplevel" */ /* * Information used when displaying widget: */ - Tcl_Obj *borderPtr; /* Structure used to draw 3-D - * border and background for menu. */ + Tcl_Obj *borderPtr; /* Structure used to draw 3-D border and + * background for menu. */ Tcl_Obj *borderWidthPtr; /* Width of border around whole menu. */ Tcl_Obj *activeBorderPtr; /* Used to draw background and border for * active element (if any). */ @@ -284,18 +297,17 @@ typedef struct TkMenu { Tcl_Obj *reliefPtr; /* 3-d effect: TK_RELIEF_RAISED, etc. */ Tcl_Obj *fontPtr; /* Text font for menu entries. */ Tcl_Obj *fgPtr; /* Foreground color for entries. */ - Tcl_Obj *disabledFgPtr; /* Foreground color when disabled. NULL - * means use normalFg with a 50% stipple - * instead. */ + Tcl_Obj *disabledFgPtr; /* Foreground color when disabled. NULL means + * use normalFg with a 50% stipple instead. */ Tcl_Obj *activeFgPtr; /* Foreground color for active entry. */ Tcl_Obj *indicatorFgPtr; /* Color for indicators in radio and check * button entries. */ - Pixmap gray; /* Bitmap for drawing disabled entries in - * a stippled fashion. None means not - * allocated yet. */ - GC textGC; /* GC for drawing text and other features - * of menu entries. */ - GC disabledGC; /* Used to produce disabled effect. If + Pixmap gray; /* Bitmap for drawing disabled entries in a + * stippled fashion. None means not allocated + * yet. */ + GC textGC; /* GC for drawing text and other features of + * menu entries. */ + GC disabledGC; /* Used to produce disabled effect. If * disabledFg isn't NULL, this GC is used to * draw text and icons for disabled entries. * Otherwise text and icons are drawn with @@ -303,52 +315,51 @@ typedef struct TkMenu { * background across them. */ GC activeGC; /* GC for drawing active entry. */ GC indicatorGC; /* For drawing indicators. */ - GC disabledImageGC; /* Used for drawing disabled images. They - * have to be stippled. This is created - * when the image is about to be drawn the - * first time. */ + GC disabledImageGC; /* Used for drawing disabled images. They have + * to be stippled. This is created when the + * image is about to be drawn the first + * time. */ /* * Information about geometry of menu. */ - - int totalWidth; /* Width of entire menu */ - int totalHeight; /* Height of entire menu */ - + + int totalWidth; /* Width of entire menu. */ + int totalHeight; /* Height of entire menu. */ + /* * Miscellaneous information: */ int tearoff; /* 1 means this menu can be torn off. On some - * platforms, the user can drag an outline - * of the menu by just dragging outside of - * the menu, and the tearoff is created where - * the mouse is released. On others, an - * indicator (such as a dashed stripe) is - * drawn, and when the menu is selected, the - * tearoff is created. */ + * platforms, the user can drag an outline of + * the menu by just dragging outside of the + * menu, and the tearoff is created where the + * mouse is released. On others, an indicator + * (such as a dashed stripe) is drawn, and + * when the menu is selected, the tearoff is + * created. */ Tcl_Obj *titlePtr; /* The title to use when this menu is torn - * off. If this is NULL, a default scheme - * will be used to generate a title for - * tearoff. */ - Tcl_Obj *tearoffCommandPtr; /* If non-NULL, points to a command to - * run whenever the menu is torn-off. */ - Tcl_Obj *takeFocusPtr; /* Value of -takefocus option; not used in - * the C code, but used by keyboard traversal - * scripts. Malloc'ed, but may be NULL. */ + * off. If this is NULL, a default scheme will + * be used to generate a title for tearoff. */ + Tcl_Obj *tearoffCommandPtr; /* If non-NULL, points to a command to run + * whenever the menu is torn-off. */ + Tcl_Obj *takeFocusPtr; /* Value of -takefocus option; not used in the + * C code, but used by keyboard traversal + * scripts. Malloc'ed, but may be NULL. */ Tcl_Obj *cursorPtr; /* Current cursor for window, or None. */ Tcl_Obj *postCommandPtr; /* Used to detect cycles in cascade hierarchy - * trees when preprocessing postcommands - * on some platforms. See PostMenu for - * more details. */ + * trees when preprocessing postcommands on + * some platforms. See PostMenu for more + * details. */ int postCommandGeneration; /* Need to do pre-invocation post command - * traversal */ + * traversal. */ int menuFlags; /* Flags for use by X; see below for - definition */ + * definition. */ TkMenuEntry *postedCascade; /* Points to menu entry for cascaded submenu * that is currently posted or NULL if no * submenu posted. */ - struct TkMenu *nextInstancePtr; + struct TkMenu *nextInstancePtr; /* The next instance of this menu in the * chain. */ struct TkMenu *masterMenuPtr; @@ -356,29 +367,26 @@ typedef struct TkMenu { * clone chain. Points back to this structure * if this menu is a master menu. */ struct TkMenuOptionTables *optionTablesPtr; - /* A pointer to the collection of option tables - * that work with menus and menu entries. */ + /* A pointer to the collection of option + * tables that work with menus and menu + * entries. */ Tk_Window parentTopLevelPtr;/* If this menu is a menubar, this is the - * toplevel that owns the menu. Only applicable - * for menubar clones. - */ - struct TkMenuReferences *menuRefPtr; + * toplevel that owns the menu. Only + * applicable for menubar clones. */ + struct TkMenuReferences *menuRefPtr; /* Each menu is hashed into a table with the - * name of the menu's window as the key. - * The information in this hash table includes - * a pointer to the menu (so that cascades - * can find this menu), a pointer to the - * list of toplevel widgets that have this - * menu as its menubar, and a list of menu - * entries that have this menu specified - * as a cascade. */ + * name of the menu's window as the key. The + * information in this hash table includes a + * pointer to the menu (so that cascades can + * find this menu), a pointer to the list of + * toplevel widgets that have this menu as its + * menubar, and a list of menu entries that + * have this menu specified as a cascade. */ TkMenuPlatformData platformData; /* The data for the specific type of menu. - * Depends on platform and menu type what - * kind of options are in this structure. - */ - Tk_OptionSpec *extensionPtr; - /* Needed by the configuration package for + * Depends on platform and menu type what kind + * of options are in this structure. */ + Tk_OptionSpec *extensionPtr;/* Needed by the configuration package for * this widget to be extended. */ Tk_SavedOptions *errorStructPtr; /* We actually have to allocate these because @@ -388,95 +396,94 @@ typedef struct TkMenu { /* * When the toplevel configure -menu command is executed, the menu may not - * exist yet. We need to keep a linked list of windows that reference - * a particular menu. + * exist yet. We need to keep a linked list of windows that reference a + * particular menu. */ typedef struct TkMenuTopLevelList { struct TkMenuTopLevelList *nextPtr; - /* The next window in the list */ + /* The next window in the list. */ Tk_Window tkwin; /* The window that has this menu as its * menubar. */ } TkMenuTopLevelList; /* - * The following structure is used to keep track of things which - * reference a menu. It is created when: + * The following structure is used to keep track of things which reference a + * menu. It is created when: * - a menu is created. * - a cascade entry is added to a menu with a non-null name - * - the "-menu" configuration option is used on a toplevel widget - * with a non-null parameter. + * - the "-menu" configuration option is used on a toplevel widget with a + * non-null parameter. * - * One of these three fields must be non-NULL, but any of the fields may - * be NULL. This structure makes it easy to determine whether or not - * anything like recalculating platform data or geometry is necessary - * when one of the three actions above is performed. + * One of these three fields must be non-NULL, but any of the fields may be + * NULL. This structure makes it easy to determine whether or not anything + * like recalculating platform data or geometry is necessary when one of the + * three actions above is performed. */ typedef struct TkMenuReferences { - struct TkMenu *menuPtr; /* The menu data structure. This is NULL - * if the menu does not exist. */ + struct TkMenu *menuPtr; /* The menu data structure. This is NULL if + * the menu does not exist. */ TkMenuTopLevelList *topLevelListPtr; - /* First in the list of all toplevels that - * have this menu as its menubar. NULL if no + /* First in the list of all toplevels that + * have this menu as its menubar. NULL if no * toplevel widgets have this menu as its * menubar. */ - TkMenuEntry *parentEntryPtr;/* First in the list of all cascade menu + TkMenuEntry *parentEntryPtr;/* First in the list of all cascade menu * entries that have this menu as their child. * NULL means no cascade entries. */ Tcl_HashEntry *hashEntryPtr;/* This is needed because the pathname of the * window (which is what we hash on) may not - * be around when we are deleting. - */ + * be around when we are deleting. */ } TkMenuReferences; /* - * This structure contains all of the option tables that are needed - * by menus. + * This structure contains all of the option tables that are needed by menus. */ typedef struct TkMenuOptionTables { - Tk_OptionTable menuOptionTable; /* The option table for menus. */ - Tk_OptionTable entryOptionTables[6];/* The tables for menu entries. */ + Tk_OptionTable menuOptionTable; + /* The option table for menus. */ + Tk_OptionTable entryOptionTables[6]; + /* The tables for menu entries. */ } TkMenuOptionTables; /* * Flag bits for menus: * - * REDRAW_PENDING: Non-zero means a DoWhenIdle handler - * has already been queued to redraw - * this window. + * REDRAW_PENDING: Non-zero means a DoWhenIdle handler has + * already been queued to redraw this window. * RESIZE_PENDING: Non-zero means a call to ComputeMenuGeometry * has already been scheduled. - * MENU_DELETION_PENDING Non-zero means that we are currently destroying - * this menu's internal structures. This is useful - * when we are in the middle of cleaning - * this master menu's chain of menus up when - * TkDestroyMenu was called again on this + * MENU_DELETION_PENDING Non-zero means that we are currently + * destroying this menu's internal structures. + * This is useful when we are in the middle of + * cleaning this master menu's chain of menus up + * when TkDestroyMenu was called again on this * menu (via a destroy binding or somesuch). - * MENU_WIN_DESTRUCTION_PENDING Non-zero means we are in the middle of - * destroying this menu's Tk_Window. + * MENU_WIN_DESTRUCTION_PENDING Non-zero means we are in the middle of + * destroying this menu's Tk_Window. * MENU_PLATFORM_FLAG1... Reserved for use by the platform-specific menu * code. */ -#define REDRAW_PENDING 1 -#define RESIZE_PENDING 2 -#define MENU_DELETION_PENDING 4 +#define REDRAW_PENDING 1 +#define RESIZE_PENDING 2 +#define MENU_DELETION_PENDING 4 #define MENU_WIN_DESTRUCTION_PENDING 8 #define MENU_PLATFORM_FLAG1 (1 << 30) #define MENU_PLATFORM_FLAG2 (1 << 29) #define MENU_PLATFORM_FLAG3 (1 << 28) /* - * Each menu created by the user is a MASTER_MENU. When a menu is torn off, - * a TEAROFF_MENU instance is created. When a menu is assigned to a toplevel - * as a menu bar, a MENUBAR instance is created. All instances have the same + * Each menu created by the user is a MASTER_MENU. When a menu is torn off, a + * TEAROFF_MENU instance is created. When a menu is assigned to a toplevel as + * a menu bar, a MENUBAR instance is created. All instances have the same * configuration information. If the master instance is deleted, all instances * are deleted. If one of the other instances is deleted, only that instance * is deleted. */ - + #define UNKNOWN_TYPE -1 #define MASTER_MENU 0 #define TEAROFF_MENU 1 @@ -486,101 +493,81 @@ typedef struct TkMenuOptionTables { * Various geometry definitions: */ -#define CASCADE_ARROW_HEIGHT 10 -#define CASCADE_ARROW_WIDTH 8 -#define DECORATION_BORDER_WIDTH 2 +#define CASCADE_ARROW_HEIGHT 10 +#define CASCADE_ARROW_WIDTH 8 +#define DECORATION_BORDER_WIDTH 2 /* - * Menu-related procedures that are shared among Tk modules but not exported - * to the outside world: + * Menu-related functions that are shared among Tk modules but not exported to + * the outside world: */ -EXTERN int TkActivateMenuEntry _ANSI_ARGS_((TkMenu *menuPtr, - int index)); -EXTERN void TkBindMenu _ANSI_ARGS_(( - Tk_Window tkwin, TkMenu *menuPtr)); -EXTERN TkMenuReferences * - TkCreateMenuReferences _ANSI_ARGS_((Tcl_Interp *interp, - char *name)); -EXTERN void TkDestroyMenu _ANSI_ARGS_((TkMenu *menuPtr)); -EXTERN void TkEventuallyRecomputeMenu _ANSI_ARGS_(( - TkMenu *menuPtr)); -EXTERN void TkEventuallyRedrawMenu _ANSI_ARGS_(( - TkMenu *menuPtr, TkMenuEntry *mePtr)); -EXTERN TkMenuReferences * - TkFindMenuReferences _ANSI_ARGS_((Tcl_Interp *interp, - char *name)); -EXTERN TkMenuReferences * - TkFindMenuReferencesObj _ANSI_ARGS_(( - Tcl_Interp *interp, Tcl_Obj *namePtr)); -EXTERN int TkFreeMenuReferences _ANSI_ARGS_(( - TkMenuReferences *menuRefPtr)); -EXTERN Tcl_HashTable * TkGetMenuHashTable _ANSI_ARGS_((Tcl_Interp *interp)); -EXTERN int TkGetMenuIndex _ANSI_ARGS_((Tcl_Interp *interp, - TkMenu *menuPtr, Tcl_Obj *objPtr, int lastOK, - int *indexPtr)); -EXTERN void TkMenuInitializeDrawingFields _ANSI_ARGS_(( - TkMenu *menuPtr)); -EXTERN void TkMenuInitializeEntryDrawingFields _ANSI_ARGS_(( - TkMenuEntry *mePtr)); -EXTERN int TkInvokeMenu _ANSI_ARGS_((Tcl_Interp *interp, - TkMenu *menuPtr, int index)); -EXTERN void TkMenuConfigureDrawOptions _ANSI_ARGS_(( - TkMenu *menuPtr)); -EXTERN int TkMenuConfigureEntryDrawOptions _ANSI_ARGS_(( - TkMenuEntry *mePtr, int index)); -EXTERN void TkMenuFreeDrawOptions _ANSI_ARGS_((TkMenu *menuPtr)); -EXTERN void TkMenuEntryFreeDrawOptions _ANSI_ARGS_(( - TkMenuEntry *mePtr)); -EXTERN void TkMenuEventProc _ANSI_ARGS_((ClientData clientData, - XEvent *eventPtr)); -EXTERN void TkMenuImageProc _ANSI_ARGS_(( - ClientData clientData, int x, int y, int width, - int height, int imgWidth, int imgHeight)); -EXTERN void TkMenuInit _ANSI_ARGS_((void)); -EXTERN void TkMenuSelectImageProc _ANSI_ARGS_ - ((ClientData clientData, int x, int y, +MODULE_SCOPE int TkActivateMenuEntry(TkMenu *menuPtr, int index); +MODULE_SCOPE void TkBindMenu(Tk_Window tkwin, TkMenu *menuPtr); +MODULE_SCOPE TkMenuReferences*TkCreateMenuReferences(Tcl_Interp *interp, + char *name); +MODULE_SCOPE void TkDestroyMenu(TkMenu *menuPtr); +MODULE_SCOPE void TkEventuallyRecomputeMenu(TkMenu *menuPtr); +MODULE_SCOPE void TkEventuallyRedrawMenu(TkMenu *menuPtr, + TkMenuEntry *mePtr); +MODULE_SCOPE TkMenuReferences*TkFindMenuReferences(Tcl_Interp *interp, char *name); +MODULE_SCOPE TkMenuReferences*TkFindMenuReferencesObj(Tcl_Interp *interp, + Tcl_Obj *namePtr); +MODULE_SCOPE int TkFreeMenuReferences(TkMenuReferences *menuRefPtr); +MODULE_SCOPE Tcl_HashTable *TkGetMenuHashTable(Tcl_Interp *interp); +MODULE_SCOPE int TkGetMenuIndex(Tcl_Interp *interp, TkMenu *menuPtr, + Tcl_Obj *objPtr, int lastOK, int *indexPtr); +MODULE_SCOPE void TkMenuInitializeDrawingFields(TkMenu *menuPtr); +MODULE_SCOPE void TkMenuInitializeEntryDrawingFields(TkMenuEntry *mePtr); +MODULE_SCOPE int TkInvokeMenu(Tcl_Interp *interp, TkMenu *menuPtr, + int index); +MODULE_SCOPE void TkMenuConfigureDrawOptions(TkMenu *menuPtr); +MODULE_SCOPE int TkMenuConfigureEntryDrawOptions( + TkMenuEntry *mePtr, int index); +MODULE_SCOPE void TkMenuFreeDrawOptions(TkMenu *menuPtr); +MODULE_SCOPE void TkMenuEntryFreeDrawOptions(TkMenuEntry *mePtr); +MODULE_SCOPE void TkMenuEventProc(ClientData clientData, + XEvent *eventPtr); +MODULE_SCOPE void TkMenuImageProc(ClientData clientData, int x, int y, int width, int height, int imgWidth, - int imgHeight)); -EXTERN Tcl_Obj * TkNewMenuName _ANSI_ARGS_((Tcl_Interp *interp, - Tcl_Obj *parentNamePtr, TkMenu *menuPtr)); -EXTERN int TkPostCommand _ANSI_ARGS_((TkMenu *menuPtr)); -EXTERN int TkPostSubmenu _ANSI_ARGS_((Tcl_Interp *interp, - TkMenu *menuPtr, TkMenuEntry *mePtr)); -EXTERN int TkPostTearoffMenu _ANSI_ARGS_((Tcl_Interp *interp, - TkMenu *menuPtr, int x, int y)); -EXTERN int TkPreprocessMenu _ANSI_ARGS_((TkMenu *menuPtr)); -EXTERN void TkRecomputeMenu _ANSI_ARGS_((TkMenu *menuPtr)); + int imgHeight); +MODULE_SCOPE void TkMenuInit(void); +MODULE_SCOPE void TkMenuSelectImageProc(ClientData clientData, int x, + int y, int width, int height, int imgWidth, + int imgHeight); +MODULE_SCOPE Tcl_Obj * TkNewMenuName(Tcl_Interp *interp, + Tcl_Obj *parentNamePtr, TkMenu *menuPtr); +MODULE_SCOPE int TkPostCommand(TkMenu *menuPtr); +MODULE_SCOPE int TkPostSubmenu(Tcl_Interp *interp, TkMenu *menuPtr, + TkMenuEntry *mePtr); +MODULE_SCOPE int TkPostTearoffMenu(Tcl_Interp *interp, TkMenu *menuPtr, + int x, int y); +MODULE_SCOPE int TkPreprocessMenu(TkMenu *menuPtr); +MODULE_SCOPE void TkRecomputeMenu(TkMenu *menuPtr); /* - * These routines are the platform-dependent routines called by the - * common code. + * These routines are the platform-dependent routines called by the common + * code. */ -EXTERN void TkpComputeMenubarGeometry _ANSI_ARGS_(( - TkMenu *menuPtr)); -EXTERN void TkpComputeStandardMenuGeometry _ANSI_ARGS_ - ((TkMenu *menuPtr)); -EXTERN int TkpConfigureMenuEntry - _ANSI_ARGS_((TkMenuEntry *mePtr)); -EXTERN void TkpDestroyMenu _ANSI_ARGS_((TkMenu *menuPtr)); -EXTERN void TkpDestroyMenuEntry - _ANSI_ARGS_((TkMenuEntry *mEntryPtr)); -EXTERN void TkpDrawMenuEntry _ANSI_ARGS_((TkMenuEntry *mePtr, - Drawable d, Tk_Font tkfont, - CONST Tk_FontMetrics *menuMetricsPtr, int x, +MODULE_SCOPE void TkpComputeMenubarGeometry(TkMenu *menuPtr); +MODULE_SCOPE void TkpComputeStandardMenuGeometry(TkMenu *menuPtr); +MODULE_SCOPE int TkpConfigureMenuEntry(TkMenuEntry *mePtr); +MODULE_SCOPE void TkpDestroyMenu(TkMenu *menuPtr); +MODULE_SCOPE void TkpDestroyMenuEntry(TkMenuEntry *mEntryPtr); +MODULE_SCOPE void TkpDrawMenuEntry(TkMenuEntry *mePtr, + Drawable d, Tk_Font tkfont, + const Tk_FontMetrics *menuMetricsPtr, int x, int y, int width, int height, int strictMotif, - int drawArrow)); -EXTERN void TkpMenuInit _ANSI_ARGS_((void)); -EXTERN int TkpMenuNewEntry _ANSI_ARGS_((TkMenuEntry *mePtr)); -EXTERN int TkpNewMenu _ANSI_ARGS_((TkMenu *menuPtr)); -EXTERN int TkpPostMenu _ANSI_ARGS_((Tcl_Interp *interp, - TkMenu *menuPtr, int x, int y)); -EXTERN void TkpSetWindowMenuBar _ANSI_ARGS_((Tk_Window tkwin, - TkMenu *menuPtr)); + int drawingParameters); +MODULE_SCOPE void TkpMenuInit(void); +MODULE_SCOPE int TkpMenuNewEntry(TkMenuEntry *mePtr); +MODULE_SCOPE int TkpNewMenu(TkMenu *menuPtr); +MODULE_SCOPE int TkpPostMenu(Tcl_Interp *interp, TkMenu *menuPtr, + int x, int y); +MODULE_SCOPE void TkpSetWindowMenuBar(Tk_Window tkwin, TkMenu *menuPtr); # undef TCL_STORAGE_CLASS # define TCL_STORAGE_CLASS DLLIMPORT #endif /* _TKMENU */ - |