summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
Diffstat (limited to 'generic')
-rw-r--r--generic/tk.decls16
-rw-r--r--generic/tk3d.c4
-rw-r--r--generic/tkArgv.c13
-rw-r--r--generic/tkBind.c10
-rw-r--r--generic/tkButton.c10
-rw-r--r--generic/tkCanvLine.c4
-rw-r--r--generic/tkCanvPs.c12
-rw-r--r--generic/tkCanvText.c5
-rw-r--r--generic/tkCanvUtil.c10
-rw-r--r--generic/tkCanvas.c65
-rw-r--r--generic/tkClipboard.c15
-rw-r--r--generic/tkCmds.c20
-rw-r--r--generic/tkConfig.c4
-rw-r--r--generic/tkConsole.c16
-rw-r--r--generic/tkCursor.c6
-rw-r--r--generic/tkDecls.h31
-rw-r--r--generic/tkEntry.c109
-rw-r--r--generic/tkFileFilter.c20
-rw-r--r--generic/tkFocus.c7
-rw-r--r--generic/tkFont.c8
-rw-r--r--generic/tkFrame.c4
-rw-r--r--generic/tkGet.c15
-rw-r--r--generic/tkGrab.c6
-rw-r--r--generic/tkGrid.c28
-rw-r--r--generic/tkImage.c12
-rw-r--r--generic/tkImgBmap.c7
-rw-r--r--generic/tkImgGIF.c4
-rw-r--r--generic/tkImgPhoto.c373
-rw-r--r--generic/tkInt.decls196
-rw-r--r--generic/tkInt.h6
-rw-r--r--generic/tkIntDecls.h367
-rw-r--r--generic/tkIntPlatDecls.h156
-rw-r--r--generic/tkIntXlibDecls.h6
-rw-r--r--generic/tkListbox.c14
-rw-r--r--generic/tkMain.c21
-rw-r--r--generic/tkMenu.c22
-rw-r--r--generic/tkMenubutton.c8
-rw-r--r--generic/tkMessage.c8
-rw-r--r--generic/tkOldConfig.c9
-rw-r--r--generic/tkOption.c15
-rw-r--r--generic/tkPack.c12
-rw-r--r--generic/tkPlace.c7
-rw-r--r--generic/tkPointer.c10
-rw-r--r--generic/tkScale.c4
-rw-r--r--generic/tkSelect.c30
-rw-r--r--generic/tkSquare.c12
-rw-r--r--generic/tkStubInit.c140
-rw-r--r--generic/tkStubLib.c14
-rw-r--r--generic/tkTest.c10
-rw-r--r--generic/tkText.c683
-rw-r--r--generic/tkText.h57
-rw-r--r--generic/tkTextIndex.c6
-rw-r--r--generic/tkTextTag.c49
-rw-r--r--generic/tkWindow.c27
54 files changed, 1588 insertions, 1135 deletions
diff --git a/generic/tk.decls b/generic/tk.decls
index dee5c13..d125ca2 100644
--- a/generic/tk.decls
+++ b/generic/tk.decls
@@ -11,7 +11,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: tk.decls,v 1.15.2.3 2001/11/11 17:58:53 wolfsuit Exp $
+# RCS: @(#) $Id: tk.decls,v 1.15.2.4 2002/02/05 02:25:14 wolfsuit Exp $
library tk
@@ -55,8 +55,8 @@ declare 4 generic {
}
declare 5 generic {
- void Tk_AddOption (Tk_Window tkwin, char *name, \
- char *value, int priority)
+ void Tk_AddOption (Tk_Window tkwin, CONST char *name, \
+ CONST char *value, int priority)
}
declare 6 generic {
@@ -78,7 +78,7 @@ declare 8 generic {
declare 9 generic {
int Tk_CanvasGetCoord (Tcl_Interp *interp, \
- Tk_Canvas canvas, char *str, double *doublePtr)
+ Tk_Canvas canvas, CONST char *str, double *doublePtr)
}
declare 10 generic {
@@ -528,7 +528,7 @@ declare 103 generic {
declare 104 generic {
int Tk_GetPixels (Tcl_Interp *interp, \
- Tk_Window tkwin, char *str, int *intPtr)
+ Tk_Window tkwin, CONST char *str, int *intPtr)
}
declare 105 generic {
@@ -551,7 +551,7 @@ declare 108 generic {
declare 109 generic {
int Tk_GetScreenMM (Tcl_Interp *interp, \
- Tk_Window tkwin, char *str, double *doublePtr)
+ Tk_Window tkwin, CONST char *str, double *doublePtr)
}
declare 110 generic {
@@ -692,7 +692,7 @@ declare 140 generic {
declare 141 generic {
Tk_Window Tk_NameToWindow (Tcl_Interp *interp, \
- char *pathName, Tk_Window tkwin)
+ CONST char *pathName, Tk_Window tkwin)
}
declare 142 generic {
@@ -703,7 +703,7 @@ declare 142 generic {
declare 143 generic {
int Tk_ParseArgv (Tcl_Interp *interp, \
- Tk_Window tkwin, int *argcPtr, char **argv, \
+ Tk_Window tkwin, int *argcPtr, CONST84 char **argv, \
Tk_ArgvInfo *argTable, int flags)
}
diff --git a/generic/tk3d.c b/generic/tk3d.c
index 4106745..28ec01d 100644
--- a/generic/tk3d.c
+++ b/generic/tk3d.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tk3d.c,v 1.11 2001/08/15 15:44:35 dkf Exp $
+ * RCS: @(#) $Id: tk3d.c,v 1.11.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tk3d.h"
@@ -20,7 +20,7 @@
* used by Tk_GetReliefFromObj.
*/
-static char *reliefStrings[] = {"flat", "groove", "raised",
+static CONST char *reliefStrings[] = {"flat", "groove", "raised",
"ridge", "solid", "sunken",
(char *) NULL};
diff --git a/generic/tkArgv.c b/generic/tkArgv.c
index 7f35368..1a29ba3 100644
--- a/generic/tkArgv.c
+++ b/generic/tkArgv.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkArgv.c,v 1.3 1999/04/16 01:51:10 stanton Exp $
+ * RCS: @(#) $Id: tkArgv.c,v 1.3.18.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -67,7 +67,7 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
* NULL means ignore Tk option specs. */
int *argcPtr; /* Number of arguments in argv. Modified
* to hold # args left in argv at end. */
- char **argv; /* Array of arguments. Modified to hold
+ CONST char **argv; /* Array of arguments. Modified to hold
* those that couldn't be processed here. */
Tk_ArgvInfo *argTable; /* Array of option descriptions */
int flags; /* Or'ed combination of various flag bits,
@@ -77,7 +77,7 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
/* Pointer to the current entry in the
* table of argument descriptions. */
Tk_ArgvInfo *matchPtr; /* Descriptor that matches current argument. */
- char *curArg; /* Current argument */
+ CONST char *curArg; /* Current argument */
register char c; /* Second character of current arg (used for
* quick check for matching; use 2nd char.
* because first char. will almost always
@@ -202,7 +202,7 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
if (argc == 0) {
goto missingArg;
} else {
- *((char **)infoPtr->dst) = argv[srcIndex];
+ *((CONST char **)infoPtr->dst) = argv[srcIndex];
srcIndex++;
argc--;
}
@@ -239,7 +239,8 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
}
break;
case TK_ARGV_FUNC: {
- typedef int (ArgvFunc)_ANSI_ARGS_((char *, char *, char *));
+ typedef int (ArgvFunc) _ANSI_ARGS_ ((char *, char *,
+ CONST char *));
ArgvFunc *handlerProc;
handlerProc = (ArgvFunc *) infoPtr->src;
@@ -252,7 +253,7 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
}
case TK_ARGV_GENFUNC: {
typedef int (ArgvGenFunc)_ANSI_ARGS_((char *, Tcl_Interp *,
- char *, int, char **));
+ char *, int, CONST char **));
ArgvGenFunc *handlerProc;
handlerProc = (ArgvGenFunc *) infoPtr->src;
diff --git a/generic/tkBind.c b/generic/tkBind.c
index d6df238..7d9682a 100644
--- a/generic/tkBind.c
+++ b/generic/tkBind.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkBind.c,v 1.18.2.2 2001/10/17 07:02:07 wolfsuit Exp $
+ * RCS: @(#) $Id: tkBind.c,v 1.18.2.3 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -810,7 +810,7 @@ TkBindFree(mainPtr)
bindInfoPtr = (BindInfo *) mainPtr->bindInfo;
DeleteVirtualEventTable(&bindInfoPtr->virtualEventTable);
bindInfoPtr->deleted = 1;
- Tcl_EventuallyFree((ClientData) bindInfoPtr, Tcl_Free);
+ Tcl_EventuallyFree((ClientData) bindInfoPtr, TCL_DYNAMIC);
mainPtr->bindInfo = NULL;
}
@@ -2617,7 +2617,7 @@ Tk_EventObjCmd(clientData, interp, objc, objv)
Tk_Window tkwin;
VirtualEventTable *vetPtr;
TkBindInfo bindInfo;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"add", "delete", "generate", "info",
NULL
};
@@ -2941,7 +2941,7 @@ DeleteVirtualEvent(interp, vetPtr, virtString, eventString)
eventPSPtr = FindSequence(interp, &vetPtr->patternTable, NULL,
eventString, 0, 0, &eventMask);
if (eventPSPtr == NULL) {
- char *string;
+ CONST char *string;
string = Tcl_GetStringResult(interp);
return (string[0] != '\0') ? TCL_ERROR : TCL_OK;
@@ -3186,7 +3186,7 @@ HandleEventGenerate(interp, mainWin, objc, objv)
Tk_Window tkwin, tkwin2;
TkWindow *mainPtr;
unsigned long eventMask;
- static char *fieldStrings[] = {
+ static CONST char *fieldStrings[] = {
"-when", "-above", "-borderwidth", "-button",
"-count", "-delta", "-detail", "-focus",
"-height",
diff --git a/generic/tkButton.c b/generic/tkButton.c
index 3e835fb..e2a731c 100644
--- a/generic/tkButton.c
+++ b/generic/tkButton.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkButton.c,v 1.13 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkButton.c,v 1.13.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkButton.h"
@@ -481,7 +481,7 @@ static Tk_OptionSpec *optionSpecs[] = {
* into a single enumerated type used to dispatch the widget command.
*/
-static char *commandNames[][8] = {
+static CONST char *commandNames[][8] = {
{"cget", "configure", (char *) NULL},
{"cget", "configure", "flash", "invoke", (char *) NULL},
{"cget", "configure", "deselect", "flash", "invoke", "select",
@@ -942,9 +942,9 @@ static void
DestroyButton(butPtr)
TkButton *butPtr; /* Info about button widget. */
{
+ butPtr->flags |= BUTTON_DELETED;
TkpDestroyButton(butPtr);
- butPtr->flags |= BUTTON_DELETED;
if (butPtr->flags & REDRAW_PENDING) {
Tcl_CancelIdleCall(TkpDisplayButton, (ClientData) butPtr);
}
@@ -1625,6 +1625,10 @@ ButtonTextVarProc(clientData, interp, name1, name2, flags)
char *name;
Tcl_Obj *valuePtr;
+ if (butPtr->flags & BUTTON_DELETED) {
+ return (char *) NULL;
+ }
+
name = Tcl_GetString(butPtr->textVarNamePtr);
/*
diff --git a/generic/tkCanvLine.c b/generic/tkCanvLine.c
index 9a0c369..ac56c50 100644
--- a/generic/tkCanvLine.c
+++ b/generic/tkCanvLine.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvLine.c,v 1.9 2001/07/03 06:03:44 hobbs Exp $
+ * RCS: @(#) $Id: tkCanvLine.c,v 1.9.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include <stdio.h>
@@ -1872,7 +1872,7 @@ ParseArrowShape(clientData, interp, tkwin, value, recordPtr, offset)
LineItem *linePtr = (LineItem *) recordPtr;
double a, b, c;
int argc;
- char **argv = NULL;
+ CONST char **argv = NULL;
if (offset != Tk_Offset(LineItem, arrowShapeA)) {
panic("ParseArrowShape received bogus offset");
diff --git a/generic/tkCanvPs.c b/generic/tkCanvPs.c
index 940b754..85f3194 100644
--- a/generic/tkCanvPs.c
+++ b/generic/tkCanvPs.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvPs.c,v 1.7 2000/04/25 01:03:06 hobbs Exp $
+ * RCS: @(#) $Id: tkCanvPs.c,v 1.7.8.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -128,7 +128,7 @@ static CONST char * CONST prolog[]= {
\n\
% This is a standard prolog for Postscript generated by Tk's canvas\n\
% widget.\n\
-% RCS: @(#) $Id: tkCanvPs.c,v 1.7 2000/04/25 01:03:06 hobbs Exp $\n\
+% RCS: @(#) $Id: tkCanvPs.c,v 1.7.8.1 2002/02/05 02:25:14 wolfsuit Exp $\n\
\n\
% The definitions below just define all of the variables used in\n\
% any of the procedures here. This is needed for obscure reasons\n\
@@ -470,7 +470,8 @@ TkCanvPostscriptCmd(canvasPtr, interp, argc, argv)
int result;
Tk_Item *itemPtr;
#define STRING_LENGTH 400
- char string[STRING_LENGTH+1], *p;
+ char string[STRING_LENGTH+1];
+ CONST char *p;
time_t now;
size_t length;
Tk_Window tkwin = canvasPtr->tkwin;
@@ -967,7 +968,7 @@ Tk_PostscriptColor(interp, psInfo, colorPtr)
*/
if (psInfoPtr->colorVar != NULL) {
- char *cmdString;
+ CONST char *cmdString;
cmdString = Tcl_GetVar2(interp, psInfoPtr->colorVar,
Tk_NameOfColor(colorPtr), 0);
@@ -1047,9 +1048,10 @@ Tk_PostscriptFont(interp, psInfo, tkfont)
Tcl_DStringInit(&ds);
if (psInfoPtr->fontVar != NULL) {
- char *list, **argv;
+ CONST char *list;
int argc;
double size;
+ CONST char **argv;
char *name;
name = Tk_NameOfFont(tkfont);
diff --git a/generic/tkCanvText.c b/generic/tkCanvText.c
index ef57473..43730cd 100644
--- a/generic/tkCanvText.c
+++ b/generic/tkCanvText.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvText.c,v 1.10 2001/08/17 21:08:28 drh Exp $
+ * RCS: @(#) $Id: tkCanvText.c,v 1.10.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include <stdio.h>
@@ -1376,7 +1376,8 @@ GetSelText(canvas, itemPtr, offset, buffer, maxBytes)
{
TextItem *textPtr = (TextItem *) itemPtr;
int byteCount;
- char *text, *selStart, *selEnd;
+ char *text;
+ CONST char *selStart, *selEnd;
Tk_CanvasTextInfo *textInfoPtr = textPtr->textInfoPtr;
if ((textInfoPtr->selectFirst < 0) ||
diff --git a/generic/tkCanvUtil.c b/generic/tkCanvUtil.c
index 5ec5eb7..595180b 100644
--- a/generic/tkCanvUtil.c
+++ b/generic/tkCanvUtil.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvUtil.c,v 1.5 1999/12/16 21:57:35 hobbs Exp $
+ * RCS: @(#) $Id: tkCanvUtil.c,v 1.5.8.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -189,7 +189,7 @@ int
Tk_CanvasGetCoord(interp, canvas, string, doublePtr)
Tcl_Interp *interp; /* Interpreter for error reporting. */
Tk_Canvas canvas; /* Canvas to which coordinate applies. */
- char *string; /* Describes coordinate (any screen
+ CONST char *string; /* Describes coordinate (any screen
* coordinate form may be used here). */
double *doublePtr; /* Place to store converted coordinate. */
{
@@ -376,7 +376,7 @@ Tk_CanvasTagsParseProc(clientData, interp, tkwin, value, widgRec, offset)
{
register Tk_Item *itemPtr = (Tk_Item *) widgRec;
int argc, i;
- char **argv;
+ CONST char **argv;
Tk_Uid *newPtr;
/*
@@ -454,7 +454,7 @@ Tk_CanvasTagsPrintProc(clientData, tkwin, widgRec, offset, freeProcPtr)
return (char *) itemPtr->tagPtr[0];
}
*freeProcPtr = TCL_DYNAMIC;
- return Tcl_Merge(itemPtr->numTags, (char **) itemPtr->tagPtr);
+ return Tcl_Merge(itemPtr->numTags, (CONST char **) itemPtr->tagPtr);
}
@@ -777,7 +777,7 @@ Tk_GetDash(interp, value, dash)
* store dash information. */
{
int argc, i;
- char **largv, **argv = NULL;
+ CONST char **largv, **argv = NULL;
char *pt;
if ((value==(char *) NULL) || (*value==0) ) {
diff --git a/generic/tkCanvas.c b/generic/tkCanvas.c
index 48cd329..f8bf769 100644
--- a/generic/tkCanvas.c
+++ b/generic/tkCanvas.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvas.c,v 1.16 2001/04/03 04:40:31 hobbs Exp $
+ * RCS: @(#) $Id: tkCanvas.c,v 1.16.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
/* #define USE_OLD_TAG_SEARCH 1 */
@@ -299,9 +299,8 @@ static Tk_Item * NextItem _ANSI_ARGS_((TagSearch *searchPtr));
#endif /* USE_OLD_TAG_SEARCH */
static void PickCurrentItem _ANSI_ARGS_((TkCanvas *canvasPtr,
XEvent *eventPtr));
-static void PrintScrollFractions _ANSI_ARGS_((int screen1,
- int screen2, int object1, int object2,
- char *string));
+static Tcl_Obj * ScrollFractions _ANSI_ARGS_((int screen1,
+ int screen2, int object1, int object2));
#ifdef USE_OLD_TAG_SEARCH
static void RelinkItems _ANSI_ARGS_((TkCanvas *canvasPtr,
Tcl_Obj *tag, Tk_Item *prevPtr));
@@ -527,7 +526,7 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
#endif /* USE_OLD_TAG_SEARCH */
int index;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"addtag", "bbox", "bind", "canvasx",
"canvasy", "cget", "configure", "coords",
"create", "dchars", "delete", "dtag",
@@ -776,7 +775,7 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
command = Tk_GetBinding(interp, canvasPtr->bindingTable,
object, Tcl_GetStringFromObj(argv[3], NULL));
if (command == NULL) {
- char *string;
+ CONST char *string;
string = Tcl_GetStringResult(interp);
/*
@@ -1620,7 +1619,7 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
}
case CANV_SCAN: {
int x, y, gain=10;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"mark", "dragto", NULL
};
@@ -1668,7 +1667,7 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
}
case CANV_SELECT: {
int index, optionindex;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"adjust", "clear", "from", "item", "to", NULL
};
enum options {
@@ -1816,10 +1815,11 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
double fraction;
if (argc == 2) {
- PrintScrollFractions(canvasPtr->xOrigin + canvasPtr->inset,
+ Tcl_SetObjResult(interp, ScrollFractions(
+ canvasPtr->xOrigin + canvasPtr->inset,
canvasPtr->xOrigin + Tk_Width(canvasPtr->tkwin)
- canvasPtr->inset, canvasPtr->scrollX1,
- canvasPtr->scrollX2, Tcl_GetStringResult(interp));
+ canvasPtr->scrollX2));
} else {
char **args = GetStringsFromObjs(argc, argv);
type = Tk_GetScrollInfo(interp, argc, args, &fraction, &count);
@@ -1859,10 +1859,11 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
double fraction;
if (argc == 2) {
- PrintScrollFractions(canvasPtr->yOrigin + canvasPtr->inset,
+ Tcl_SetObjResult(interp,ScrollFractions(\
+ canvasPtr->yOrigin + canvasPtr->inset,
canvasPtr->yOrigin + Tk_Height(canvasPtr->tkwin)
- canvasPtr->inset, canvasPtr->scrollY1,
- canvasPtr->scrollY2, Tcl_GetStringResult(interp));
+ canvasPtr->scrollY2));
} else {
char **args = GetStringsFromObjs(argc, argv);
type = Tk_GetScrollInfo(interp, argc, args, &fraction, &count);
@@ -2062,7 +2063,7 @@ ConfigureCanvas(interp, canvasPtr, argc, argv, flags)
canvasPtr->scrollY2 = 0;
if (canvasPtr->regionString != NULL) {
int argc2;
- char **argv2;
+ CONST char **argv2;
if (Tcl_SplitList(canvasPtr->interp, canvasPtr->regionString,
&argc2, &argv2) != TCL_OK) {
@@ -3972,7 +3973,7 @@ FindItems(interp, canvasPtr, argc, argv, newTag, first, searchPtrPtr)
Tk_Item *itemPtr;
Tk_Uid uid;
int index;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"above", "all", "below", "closest",
"enclosed", "overlapping", "withtag", NULL
};
@@ -5205,12 +5206,12 @@ GridAlign(coord, spacing)
/*
*----------------------------------------------------------------------
*
- * PrintScrollFractions --
+ * ScrollFractions --
*
* Given the range that's visible in the window and the "100%
- * range" for what's in the canvas, print a string containing
- * the scroll fractions. This procedure is used for both x
- * and y scrolling.
+ * range" for what's in the canvas, return a list of two
+ * doubles representing the scroll fractions. This procedure
+ * is used for both x and y scrolling.
*
* Results:
* The memory pointed to by string is modified to hold
@@ -5223,17 +5224,15 @@ GridAlign(coord, spacing)
*----------------------------------------------------------------------
*/
-static void
-PrintScrollFractions(screen1, screen2, object1, object2, string)
+static Tcl_Obj *
+ScrollFractions(screen1, screen2, object1, object2)
int screen1; /* Lowest coordinate visible in the window. */
int screen2; /* Highest coordinate visible in the window. */
int object1; /* Lowest coordinate in the object. */
int object2; /* Highest coordinate in the object. */
- char *string; /* Two real numbers get printed here. Must
- * have enough storage for two %g
- * conversions. */
{
double range, f1, f2;
+ char buffer[2*TCL_DOUBLE_SPACE+2];
range = object2 - object1;
if (range <= 0) {
@@ -5252,7 +5251,8 @@ PrintScrollFractions(screen1, screen2, object1, object2, string)
f2 = f1;
}
}
- sprintf(string, "%g %g", f1, f2);
+ sprintf(buffer, "%g %g", f1, f2);
+ return Tcl_NewStringObj(buffer, -1);
}
/*
@@ -5281,7 +5281,6 @@ CanvasUpdateScrollbars(canvasPtr)
TkCanvas *canvasPtr; /* Information about canvas. */
{
int result;
- char buffer[200];
Tcl_Interp *interp;
int xOrigin, yOrigin, inset, width, height, scrollX1, scrollX2,
scrollY1, scrollY2;
@@ -5313,9 +5312,11 @@ CanvasUpdateScrollbars(canvasPtr)
scrollY2 = canvasPtr->scrollY2;
canvasPtr->flags &= ~UPDATE_SCROLLBARS;
if (canvasPtr->xScrollCmd != NULL) {
- PrintScrollFractions(xOrigin + inset, xOrigin + width - inset,
- scrollX1, scrollX2, buffer);
- result = Tcl_VarEval(interp, xScrollCmd, " ", buffer, (char *) NULL);
+ Tcl_Obj *fractions = ScrollFractions(xOrigin + inset,
+ xOrigin + width - inset, scrollX1, scrollX2);
+ result = Tcl_VarEval(interp, xScrollCmd, " ",
+ Tcl_GetString(fractions), (char *) NULL);
+ Tcl_DecrRefCount(fractions);
if (result != TCL_OK) {
Tcl_BackgroundError(interp);
}
@@ -5324,9 +5325,11 @@ CanvasUpdateScrollbars(canvasPtr)
}
if (yScrollCmd != NULL) {
- PrintScrollFractions(yOrigin + inset, yOrigin + height - inset,
- scrollY1, scrollY2, buffer);
- result = Tcl_VarEval(interp, yScrollCmd, " ", buffer, (char *) NULL);
+ Tcl_Obj *fractions = ScrollFractions(yOrigin + inset,
+ yOrigin + height - inset, scrollY1, scrollY2);
+ result = Tcl_VarEval(interp, yScrollCmd, " ",
+ Tcl_GetString(fractions), (char *) NULL);
+ Tcl_DecrRefCount(fractions);
if (result != TCL_OK) {
Tcl_BackgroundError(interp);
}
diff --git a/generic/tkClipboard.c b/generic/tkClipboard.c
index 426af71..cf87dc1 100644
--- a/generic/tkClipboard.c
+++ b/generic/tkClipboard.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkClipboard.c,v 1.7 2000/08/01 18:52:45 ericm Exp $
+ * RCS: @(#) $Id: tkClipboard.c,v 1.7.6.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -434,7 +434,7 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv)
Tk_Window tkwin = (Tk_Window) clientData;
char *path = NULL;
Atom selection;
- static char *optionStrings[] = { "append", "clear", "get", NULL };
+ static CONST char *optionStrings[] = { "append", "clear", "get", NULL };
enum options { CLIPBOARD_APPEND, CLIPBOARD_CLEAR, CLIPBOARD_GET };
int index, i;
@@ -454,8 +454,9 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv)
char *targetName = NULL;
char *formatName = NULL;
char *string;
- static char *appendOptionStrings[] = { "-displayof", "-format",
- "-type", NULL };
+ static CONST char *appendOptionStrings[] = {
+ "-displayof", "-format", "-type", NULL
+ };
enum appendOptions { APPEND_DISPLAYOF, APPEND_FORMAT,
APPEND_TYPE };
int subIndex, length;
@@ -525,7 +526,7 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv)
Tcl_GetString(objv[i]));
}
case CLIPBOARD_CLEAR: {
- static char *clearOptionStrings[] = { "-displayof", NULL };
+ static CONST char *clearOptionStrings[] = { "-displayof", NULL };
enum clearOptions { CLEAR_DISPLAYOF };
int subIndex;
if (objc != 2 && objc != 4) {
@@ -556,7 +557,9 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv)
Tcl_DString selBytes;
int result;
char *string;
- static char *getOptionStrings[] = { "-displayof", "-type", NULL };
+ static CONST char *getOptionStrings[] = {
+ "-displayof", "-type", NULL
+ };
enum getOptions { APPEND_DISPLAYOF, APPEND_TYPE };
int subIndex;
diff --git a/generic/tkCmds.c b/generic/tkCmds.c
index 30f9137..65ec9e6 100644
--- a/generic/tkCmds.c
+++ b/generic/tkCmds.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCmds.c,v 1.20.2.2 2001/10/17 07:02:07 wolfsuit Exp $
+ * RCS: @(#) $Id: tkCmds.c,v 1.20.2.3 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -65,7 +65,7 @@ Tk_BellObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *bellOptions[] = {"-displayof", "-nice", (char *) NULL};
+ static CONST char *bellOptions[] = {"-displayof", "-nice", (char *) NULL};
enum options { TK_BELL_DISPLAYOF, TK_BELL_NICE };
Tk_Window tkwin = (Tk_Window) clientData;
int i, index, nice = 0;
@@ -618,7 +618,7 @@ Tk_TkObjCmd(clientData, interp, objc, objv)
{
int index;
Tk_Window tkwin;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"appname", "scaling", "useinputmethods", NULL
};
enum options {
@@ -709,13 +709,13 @@ Tk_TkObjCmd(clientData, interp, objc, objv)
* That will indicate to the user that input methods
* are just not available.
*/
- int bool;
- if (Tcl_GetBooleanFromObj(interp, objv[2+skip], &bool)
+ int boolVal;
+ if (Tcl_GetBooleanFromObj(interp, objv[2+skip], &boolVal)
!= TCL_OK) {
return TCL_ERROR;
}
#ifdef TK_USE_INPUT_METHODS
- dispPtr->useInputMethods = bool;
+ dispPtr->useInputMethods = boolVal;
#endif /* TK_USE_INPUT_METHODS */
} else if ((objc - skip) != 2) {
Tcl_WrongNumArgs(interp, 2, objv,
@@ -758,7 +758,7 @@ Tk_TkwaitObjCmd(clientData, interp, objc, objv)
{
Tk_Window tkwin = (Tk_Window) clientData;
int done, index;
- static char *optionStrings[] = { "variable", "visibility", "window",
+ static CONST char *optionStrings[] = { "variable", "visibility", "window",
(char *) NULL };
enum options { TKWAIT_VARIABLE, TKWAIT_VISIBILITY, TKWAIT_WINDOW };
@@ -920,7 +920,7 @@ Tk_UpdateObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *updateOptions[] = {"idletasks", (char *) NULL};
+ static CONST char *updateOptions[] = {"idletasks", (char *) NULL};
int flags, index;
TkDisplay *dispPtr;
@@ -1008,7 +1008,7 @@ Tk_WinfoObjCmd(clientData, interp, objc, objv)
{StaticGray, "staticgray"},
{-1, NULL}
};
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"cells", "children", "class", "colormapfull",
"depth", "geometry", "height", "id",
"ismapped", "manager", "name", "parent",
@@ -1599,7 +1599,7 @@ Tk_WmObjCmd(clientData, interp, objc, objv)
Tk_Window tkwin;
TkWindow *winPtr;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"aspect", "client", "command", "deiconify",
"focusmodel", "frame", "geometry", "grid",
"group", "iconbitmap", "iconify", "iconmask",
diff --git a/generic/tkConfig.c b/generic/tkConfig.c
index ab8b55f..bd0a650 100644
--- a/generic/tkConfig.c
+++ b/generic/tkConfig.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkConfig.c,v 1.15 2001/08/15 15:44:36 dkf Exp $
+ * RCS: @(#) $Id: tkConfig.c,v 1.15.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
/*
@@ -743,7 +743,7 @@ DoObjConfig(interp, recordPtr, optionPtr, valuePtr, tkwin, savedOptionPtr)
int new;
if (Tcl_GetIndexFromObj(interp, valuePtr,
- (char **) optionPtr->specPtr->clientData,
+ (CONST char **) optionPtr->specPtr->clientData,
optionPtr->specPtr->optionName+1, 0, &new) != TCL_OK) {
return TCL_ERROR;
}
diff --git a/generic/tkConsole.c b/generic/tkConsole.c
index bb6bcad..c631fab 100644
--- a/generic/tkConsole.c
+++ b/generic/tkConsole.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkConsole.c,v 1.13 2001/08/06 18:29:41 dgp Exp $
+ * RCS: @(#) $Id: tkConsole.c,v 1.13.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tk.h"
@@ -47,9 +47,6 @@ TCL_DECLARE_MUTEX(consoleMutex)
* The first three will be used in the tk app shells...
*/
-void TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,
- int devId, char *buffer, long size));
-
static int ConsoleCmd _ANSI_ARGS_((ClientData clientData,
Tcl_Interp *interp, int argc, char **argv));
static void ConsoleDeleteProc _ANSI_ARGS_((ClientData clientData));
@@ -61,7 +58,7 @@ static int InterpreterCmd _ANSI_ARGS_((ClientData clientData,
static int ConsoleInput _ANSI_ARGS_((ClientData instanceData,
char *buf, int toRead, int *errorCode));
static int ConsoleOutput _ANSI_ARGS_((ClientData instanceData,
- char *buf, int toWrite, int *errorCode));
+ CONST char *buf, int toWrite, int *errorCode));
static int ConsoleClose _ANSI_ARGS_((ClientData instanceData,
Tcl_Interp *interp));
static void ConsoleWatch _ANSI_ARGS_((ClientData instanceData,
@@ -336,7 +333,7 @@ Tk_CreateConsoleWindow(interp)
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
#ifdef MAC_TCL
- static char initCmd[] = "source -rsrc {Console}";
+ static char initCmd[] = "if {[catch {source $tk_library:console.tcl}]} {source -rsrc console}";
#else
static char initCmd[] = "source $tk_library/console.tcl";
#endif
@@ -408,7 +405,7 @@ Tk_CreateConsoleWindow(interp)
static int
ConsoleOutput(instanceData, buf, toWrite, errorCode)
ClientData instanceData; /* Indicates which device to use. */
- char *buf; /* The data buffer. */
+ CONST char *buf; /* The data buffer. */
int toWrite; /* How many bytes to write? */
int *errorCode; /* Where to store error code. */
{
@@ -476,6 +473,9 @@ ConsoleClose(instanceData, interp)
ClientData instanceData; /* Unused. */
Tcl_Interp *interp; /* Unused. */
{
+ ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
+ Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
+ tsdPtr->gStdoutInterp = NULL;
return 0;
}
@@ -775,7 +775,7 @@ TkConsolePrint(interp, devId, buffer, size)
Tcl_Interp *interp; /* Main interpreter. */
int devId; /* TCL_STDOUT for stdout, TCL_STDERR for
* stderr. */
- char *buffer; /* Text buffer. */
+ CONST char *buffer; /* Text buffer. */
long size; /* Size of text buffer. */
{
Tcl_DString command, output;
diff --git a/generic/tkCursor.c b/generic/tkCursor.c
index ee2663e..09527b0 100644
--- a/generic/tkCursor.c
+++ b/generic/tkCursor.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCursor.c,v 1.7 2001/08/15 15:44:36 dkf Exp $
+ * RCS: @(#) $Id: tkCursor.c,v 1.7.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -276,13 +276,12 @@ GetCursor(interp, tkwin, string)
cursorPtr->objRefCount = 0;
cursorPtr->otherTable = &dispPtr->cursorNameTable;
cursorPtr->hashPtr = nameHashPtr;
- cursorPtr->nextPtr = NULL;
+ cursorPtr->nextPtr = existingCursorPtr;
cursorPtr->idHashPtr = Tcl_CreateHashEntry(&dispPtr->cursorIdTable,
(char *) cursorPtr->cursor, &new);
if (!new) {
panic("cursor already registered in Tk_GetCursor");
}
- cursorPtr->nextPtr = existingCursorPtr;
Tcl_SetHashValue(nameHashPtr, cursorPtr);
Tcl_SetHashValue(cursorPtr->idHashPtr, cursorPtr);
@@ -384,6 +383,7 @@ Tk_GetCursorFromData(interp, tkwin, source, mask, width, height,
cursorPtr->objRefCount = 0;
cursorPtr->idHashPtr = Tcl_CreateHashEntry(&dispPtr->cursorIdTable,
(char *) cursorPtr->cursor, &new);
+ cursorPtr->nextPtr = NULL;
if (!new) {
panic("cursor already registered in Tk_GetCursorFromData");
diff --git a/generic/tkDecls.h b/generic/tkDecls.h
index a60433b..10b234a 100644
--- a/generic/tkDecls.h
+++ b/generic/tkDecls.h
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkDecls.h,v 1.15 2001/09/26 20:25:17 pspjuth Exp $
+ * RCS: @(#) $Id: tkDecls.h,v 1.15.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#ifndef _TKDECLS
@@ -50,7 +50,8 @@ EXTERN void Tk_3DVerticalBevel _ANSI_ARGS_((Tk_Window tkwin,
int relief));
/* 5 */
EXTERN void Tk_AddOption _ANSI_ARGS_((Tk_Window tkwin,
- char * name, char * value, int priority));
+ CONST char * name, CONST char * value,
+ int priority));
/* 6 */
EXTERN void Tk_BindEvent _ANSI_ARGS_((
Tk_BindingTable bindingTable,
@@ -66,7 +67,7 @@ EXTERN void Tk_CanvasEventuallyRedraw _ANSI_ARGS_((
int y2));
/* 9 */
EXTERN int Tk_CanvasGetCoord _ANSI_ARGS_((Tcl_Interp * interp,
- Tk_Canvas canvas, char * str,
+ Tk_Canvas canvas, CONST char * str,
double * doublePtr));
/* 10 */
EXTERN Tk_CanvasTextInfo * Tk_CanvasGetTextInfo _ANSI_ARGS_((
@@ -391,7 +392,8 @@ EXTERN Tk_Uid Tk_GetOption _ANSI_ARGS_((Tk_Window tkwin,
char * name, char * className));
/* 104 */
EXTERN int Tk_GetPixels _ANSI_ARGS_((Tcl_Interp * interp,
- Tk_Window tkwin, char * str, int * intPtr));
+ Tk_Window tkwin, CONST char * str,
+ int * intPtr));
/* 105 */
EXTERN Pixmap Tk_GetPixmap _ANSI_ARGS_((Display * display,
Drawable d, int width, int height, int depth));
@@ -407,7 +409,7 @@ EXTERN int Tk_GetScrollInfo _ANSI_ARGS_((Tcl_Interp * interp,
int * intPtr));
/* 109 */
EXTERN int Tk_GetScreenMM _ANSI_ARGS_((Tcl_Interp * interp,
- Tk_Window tkwin, char * str,
+ Tk_Window tkwin, CONST char * str,
double * doublePtr));
/* 110 */
EXTERN int Tk_GetSelection _ANSI_ARGS_((Tcl_Interp * interp,
@@ -497,15 +499,16 @@ EXTERN char * Tk_NameOfJustify _ANSI_ARGS_((Tk_Justify justify));
EXTERN char * Tk_NameOfRelief _ANSI_ARGS_((int relief));
/* 141 */
EXTERN Tk_Window Tk_NameToWindow _ANSI_ARGS_((Tcl_Interp * interp,
- char * pathName, Tk_Window tkwin));
+ CONST char * pathName, Tk_Window tkwin));
/* 142 */
EXTERN void Tk_OwnSelection _ANSI_ARGS_((Tk_Window tkwin,
Atom selection, Tk_LostSelProc * proc,
ClientData clientData));
/* 143 */
EXTERN int Tk_ParseArgv _ANSI_ARGS_((Tcl_Interp * interp,
- Tk_Window tkwin, int * argcPtr, char ** argv,
- Tk_ArgvInfo * argTable, int flags));
+ Tk_Window tkwin, int * argcPtr,
+ CONST84 char ** argv, Tk_ArgvInfo * argTable,
+ int flags));
/* 144 */
EXTERN void Tk_PhotoPutBlock _ANSI_ARGS_((Tk_PhotoHandle handle,
Tk_PhotoImageBlock * blockPtr, int x, int y,
@@ -857,11 +860,11 @@ typedef struct TkStubs {
GC (*tk_3DBorderGC) _ANSI_ARGS_((Tk_Window tkwin, Tk_3DBorder border, int which)); /* 2 */
void (*tk_3DHorizontalBevel) _ANSI_ARGS_((Tk_Window tkwin, Drawable drawable, Tk_3DBorder border, int x, int y, int width, int height, int leftIn, int rightIn, int topBevel, int relief)); /* 3 */
void (*tk_3DVerticalBevel) _ANSI_ARGS_((Tk_Window tkwin, Drawable drawable, Tk_3DBorder border, int x, int y, int width, int height, int leftBevel, int relief)); /* 4 */
- void (*tk_AddOption) _ANSI_ARGS_((Tk_Window tkwin, char * name, char * value, int priority)); /* 5 */
+ void (*tk_AddOption) _ANSI_ARGS_((Tk_Window tkwin, CONST char * name, CONST char * value, int priority)); /* 5 */
void (*tk_BindEvent) _ANSI_ARGS_((Tk_BindingTable bindingTable, XEvent * eventPtr, Tk_Window tkwin, int numObjects, ClientData * objectPtr)); /* 6 */
void (*tk_CanvasDrawableCoords) _ANSI_ARGS_((Tk_Canvas canvas, double x, double y, short * drawableXPtr, short * drawableYPtr)); /* 7 */
void (*tk_CanvasEventuallyRedraw) _ANSI_ARGS_((Tk_Canvas canvas, int x1, int y1, int x2, int y2)); /* 8 */
- int (*tk_CanvasGetCoord) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Canvas canvas, char * str, double * doublePtr)); /* 9 */
+ int (*tk_CanvasGetCoord) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Canvas canvas, CONST char * str, double * doublePtr)); /* 9 */
Tk_CanvasTextInfo * (*tk_CanvasGetTextInfo) _ANSI_ARGS_((Tk_Canvas canvas)); /* 10 */
int (*tk_CanvasPsBitmap) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Canvas canvas, Pixmap bitmap, int x, int y, int width, int height)); /* 11 */
int (*tk_CanvasPsColor) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Canvas canvas, XColor * colorPtr)); /* 12 */
@@ -956,12 +959,12 @@ typedef struct TkStubs {
int (*tk_GetJustify) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tk_Justify * justifyPtr)); /* 101 */
int (*tk_GetNumMainWindows) _ANSI_ARGS_((void)); /* 102 */
Tk_Uid (*tk_GetOption) _ANSI_ARGS_((Tk_Window tkwin, char * name, char * className)); /* 103 */
- int (*tk_GetPixels) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, char * str, int * intPtr)); /* 104 */
+ int (*tk_GetPixels) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, CONST char * str, int * intPtr)); /* 104 */
Pixmap (*tk_GetPixmap) _ANSI_ARGS_((Display * display, Drawable d, int width, int height, int depth)); /* 105 */
int (*tk_GetRelief) _ANSI_ARGS_((Tcl_Interp * interp, char * name, int * reliefPtr)); /* 106 */
void (*tk_GetRootCoords) _ANSI_ARGS_((Tk_Window tkwin, int * xPtr, int * yPtr)); /* 107 */
int (*tk_GetScrollInfo) _ANSI_ARGS_((Tcl_Interp * interp, int argc, char ** argv, double * dblPtr, int * intPtr)); /* 108 */
- int (*tk_GetScreenMM) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, char * str, double * doublePtr)); /* 109 */
+ int (*tk_GetScreenMM) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, CONST char * str, double * doublePtr)); /* 109 */
int (*tk_GetSelection) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, Atom selection, Atom target, Tk_GetSelProc * proc, ClientData clientData)); /* 110 */
Tk_Uid (*tk_GetUid) _ANSI_ARGS_((CONST char * str)); /* 111 */
Visual * (*tk_GetVisual) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, char * str, int * depthPtr, Colormap * colormapPtr)); /* 112 */
@@ -993,9 +996,9 @@ typedef struct TkStubs {
char * (*tk_NameOfJoinStyle) _ANSI_ARGS_((int join)); /* 138 */
char * (*tk_NameOfJustify) _ANSI_ARGS_((Tk_Justify justify)); /* 139 */
char * (*tk_NameOfRelief) _ANSI_ARGS_((int relief)); /* 140 */
- Tk_Window (*tk_NameToWindow) _ANSI_ARGS_((Tcl_Interp * interp, char * pathName, Tk_Window tkwin)); /* 141 */
+ Tk_Window (*tk_NameToWindow) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pathName, Tk_Window tkwin)); /* 141 */
void (*tk_OwnSelection) _ANSI_ARGS_((Tk_Window tkwin, Atom selection, Tk_LostSelProc * proc, ClientData clientData)); /* 142 */
- int (*tk_ParseArgv) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, int * argcPtr, char ** argv, Tk_ArgvInfo * argTable, int flags)); /* 143 */
+ int (*tk_ParseArgv) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, int * argcPtr, CONST84 char ** argv, Tk_ArgvInfo * argTable, int flags)); /* 143 */
void (*tk_PhotoPutBlock) _ANSI_ARGS_((Tk_PhotoHandle handle, Tk_PhotoImageBlock * blockPtr, int x, int y, int width, int height)); /* 144 */
void (*tk_PhotoPutZoomedBlock) _ANSI_ARGS_((Tk_PhotoHandle handle, Tk_PhotoImageBlock * blockPtr, int x, int y, int width, int height, int zoomX, int zoomY, int subsampleX, int subsampleY)); /* 145 */
int (*tk_PhotoGetImage) _ANSI_ARGS_((Tk_PhotoHandle handle, Tk_PhotoImageBlock * blockPtr)); /* 146 */
diff --git a/generic/tkEntry.c b/generic/tkEntry.c
index 43c3429..46d2a56 100644
--- a/generic/tkEntry.c
+++ b/generic/tkEntry.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkEntry.c,v 1.23 2001/09/21 22:08:19 hobbs Exp $
+ * RCS: @(#) $Id: tkEntry.c,v 1.23.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -45,7 +45,7 @@ typedef struct {
* Fields that are set by widget commands other than "configure".
*/
- char *string; /* Pointer to storage for string;
+ CONST char *string; /* Pointer to storage for string;
* NULL-terminated; malloc-ed. */
int insertPos; /* Character index before which next typed
* character will be inserted. */
@@ -134,7 +134,7 @@ typedef struct {
* configuration settings above.
*/
- char *displayString; /* String to use when displaying. This may
+ CONST char *displayString; /* String to use when displaying. This may
* be a pointer to string, or a pointer to
* malloced memory with the same character
* length as string but whose characters
@@ -597,7 +597,7 @@ static Tk_OptionSpec sbOptSpec[] = {
* enumerated types used to dispatch the entry widget command.
*/
-static char *entryCmdNames[] = {
+static CONST char *entryCmdNames[] = {
"bbox", "cget", "configure", "delete", "get", "icursor", "index",
"insert", "scan", "selection", "validate", "xview", (char *) NULL
};
@@ -608,7 +608,7 @@ enum entryCmd {
COMMAND_SCAN, COMMAND_SELECTION, COMMAND_VALIDATE, COMMAND_XVIEW
};
-static char *selCmdNames[] = {
+static CONST char *selCmdNames[] = {
"adjust", "clear", "from", "present", "range", "to", (char *) NULL
};
@@ -623,7 +623,7 @@ enum selCmd {
* enumerated types used to dispatch the spinbox widget command.
*/
-static char *sbCmdNames[] = {
+static CONST char *sbCmdNames[] = {
"bbox", "cget", "configure", "delete", "get", "icursor", "identify",
"index", "insert", "invoke", "scan", "selection", "set",
"validate", "xview", (char *) NULL
@@ -636,7 +636,7 @@ enum sbCmd {
SB_CMD_SET, SB_CMD_VALIDATE, SB_CMD_XVIEW
};
-static char *sbSelCmdNames[] = {
+static CONST char *sbSelCmdNames[] = {
"adjust", "clear", "element", "from", "present", "range", "to",
(char *) NULL
};
@@ -650,7 +650,7 @@ enum sbselCmd {
* Extra for selection of elements
*/
-static char *selElementNames[] = {
+static CONST char *selElementNames[] = {
"none", "buttondown", "buttonup", (char *) NULL, "entry"
};
enum selelement {
@@ -690,7 +690,7 @@ static void EntryLostSelection _ANSI_ARGS_((
static void EventuallyRedraw _ANSI_ARGS_((Entry *entryPtr));
static void EntryScanTo _ANSI_ARGS_((Entry *entryPtr, int y));
static void EntrySetValue _ANSI_ARGS_((Entry *entryPtr,
- char *value));
+ CONST char *value));
static void EntrySelectTo _ANSI_ARGS_((
Entry *entryPtr, int index));
static char * EntryTextVarProc _ANSI_ARGS_((ClientData clientData,
@@ -700,12 +700,13 @@ static void EntryUpdateScrollbar _ANSI_ARGS_((Entry *entryPtr));
static int EntryValidate _ANSI_ARGS_((Entry *entryPtr,
char *cmd));
static int EntryValidateChange _ANSI_ARGS_((Entry *entryPtr,
- char *change, char *new, int index, int type));
+ char *change, CONST char *new, int index,
+ int type));
static void ExpandPercents _ANSI_ARGS_((Entry *entryPtr,
- char *before, char *change, char *new,
+ CONST char *before, char *change, CONST char *new,
int index, int type, Tcl_DString *dsPtr));
static void EntryValueChanged _ANSI_ARGS_((Entry *entryPtr,
- char *newValue));
+ CONST char *newValue));
static void EntryVisibleRange _ANSI_ARGS_((Entry *entryPtr,
double *firstPtr, double *lastPtr));
static int EntryWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
@@ -770,6 +771,7 @@ Tk_EntryObjCmd(clientData, interp, objc, objv)
register Entry *entryPtr;
Tk_OptionTable optionTable;
Tk_Window tkwin;
+ char *tmp;
if (objc < 2) {
Tcl_WrongNumArgs(interp, 1, objv, "pathName ?options?");
@@ -807,8 +809,9 @@ Tk_EntryObjCmd(clientData, interp, objc, objv)
(ClientData) entryPtr, EntryCmdDeletedProc);
entryPtr->optionTable = optionTable;
entryPtr->type = TK_ENTRY;
- entryPtr->string = (char *) ckalloc(1);
- entryPtr->string[0] = '\0';
+ tmp = (char *) ckalloc(1);
+ tmp[0] = '\0';
+ entryPtr->string = tmp;
entryPtr->selectFirst = -1;
entryPtr->selectLast = -1;
@@ -984,7 +987,7 @@ EntryWidgetObjCmd(clientData, interp, objc, objv)
Tcl_WrongNumArgs(interp, 2, objv, (char *) NULL);
goto error;
}
- Tcl_SetResult(interp, entryPtr->string, TCL_STATIC);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), entryPtr->string, -1);
break;
}
@@ -1325,7 +1328,7 @@ DestroyEntry(memPtr)
* stuff.
*/
- ckfree(entryPtr->string);
+ ckfree((char *)entryPtr->string);
if (entryPtr->textVarName != NULL) {
Tcl_UntraceVar(entryPtr->interp, entryPtr->textVarName,
TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
@@ -1339,7 +1342,7 @@ DestroyEntry(memPtr)
}
Tcl_DeleteTimerHandler(entryPtr->insertBlinkHandler);
if (entryPtr->displayString != entryPtr->string) {
- ckfree(entryPtr->displayString);
+ ckfree((char *)entryPtr->displayString);
}
if (entryPtr->type == TK_SPINBOX) {
Spinbox *sbPtr = (Spinbox *) entryPtr;
@@ -1634,7 +1637,7 @@ ConfigureEntry(interp, entryPtr, objc, objv, flags)
*/
if (entryPtr->textVarName != NULL) {
- char *value;
+ CONST char *value;
value = Tcl_GetVar(interp, entryPtr->textVarName, TCL_GLOBAL_ONLY);
if (value == NULL) {
@@ -2081,7 +2084,7 @@ EntryComputeGeometry(entryPtr)
char *p;
if (entryPtr->displayString != entryPtr->string) {
- ckfree(entryPtr->displayString);
+ ckfree((char *)entryPtr->displayString);
entryPtr->displayString = entryPtr->string;
entryPtr->numDisplayBytes = entryPtr->numBytes;
}
@@ -2107,10 +2110,9 @@ EntryComputeGeometry(entryPtr)
size = Tcl_UniCharToUtf(ch, buf);
entryPtr->numDisplayBytes = entryPtr->numChars * size;
- entryPtr->displayString =
- (char *) ckalloc((unsigned) (entryPtr->numDisplayBytes + 1));
+ p = (char *) ckalloc((unsigned) (entryPtr->numDisplayBytes + 1));
+ entryPtr->displayString = p;
- p = entryPtr->displayString;
for (i = entryPtr->numChars; --i >= 0; ) {
p += Tcl_UniCharToUtf(ch, p);
}
@@ -2214,7 +2216,8 @@ InsertChars(entryPtr, index, value)
* string). */
{
int byteIndex, byteCount, oldChars, charsAdded, newByteCount;
- char *new, *string;
+ CONST char *string;
+ char *new;
string = entryPtr->string;
byteIndex = Tcl_UtfAtIndex(string, index) - string;
@@ -2237,7 +2240,7 @@ InsertChars(entryPtr, index, value)
return;
}
- ckfree(string);
+ ckfree((char *)string);
entryPtr->string = new;
/*
@@ -2311,7 +2314,8 @@ DeleteChars(entryPtr, index, count)
int count; /* How many characters to delete. */
{
int byteIndex, byteCount, newByteCount;
- char *new, *string, *todelete;
+ CONST char *string;
+ char *new, *todelete;
if ((index + count) > entryPtr->numChars) {
count = entryPtr->numChars - index;
@@ -2343,7 +2347,7 @@ DeleteChars(entryPtr, index, count)
}
ckfree(todelete);
- ckfree(entryPtr->string);
+ ckfree((char *)entryPtr->string);
entryPtr->string = new;
entryPtr->numChars -= count;
entryPtr->numBytes -= byteCount;
@@ -2423,7 +2427,7 @@ DeleteChars(entryPtr, index, count)
static void
EntryValueChanged(entryPtr, newValue)
Entry *entryPtr; /* Entry whose value just changed. */
- char *newValue; /* If this value is not NULL, we first
+ CONST char *newValue; /* If this value is not NULL, we first
* force the value of the entry to this */
{
if (newValue != NULL) {
@@ -2483,9 +2487,9 @@ EntryValueChanged(entryPtr, newValue)
static void
EntrySetValue(entryPtr, value)
Entry *entryPtr; /* Entry whose value is to be changed. */
- char *value; /* New text to display in entry. */
+ CONST char *value; /* New text to display in entry. */
{
- char *oldSource;
+ CONST char *oldSource;
int code, valueLen, malloced = 0;
if (strcmp(value, entryPtr->string) == 0) {
@@ -2501,9 +2505,9 @@ EntrySetValue(entryPtr, value)
* point to volatile memory, like the value of the -textvar
* which may get freed during validation
*/
- oldSource = (char *) ckalloc((unsigned) (valueLen + 1));
- strcpy(oldSource, value);
- value = oldSource;
+ char *tmp = (char *) ckalloc((unsigned) (valueLen + 1));
+ strcpy(tmp, value);
+ value = tmp;
malloced = 1;
entryPtr->flags |= VALIDATE_VAR;
@@ -2516,19 +2520,20 @@ EntrySetValue(entryPtr, value)
*/
if (entryPtr->flags & VALIDATE_ABORT) {
entryPtr->flags &= ~VALIDATE_ABORT;
- ckfree(value);
+ ckfree((char *)value);
return;
}
}
oldSource = entryPtr->string;
- ckfree(entryPtr->string);
+ ckfree((char *)entryPtr->string);
if (malloced) {
entryPtr->string = value;
} else {
- entryPtr->string = (char *) ckalloc((unsigned) (valueLen + 1));
- strcpy(entryPtr->string, value);
+ char *tmp = (char *) ckalloc((unsigned) (valueLen + 1));
+ strcpy(tmp, value);
+ entryPtr->string = tmp;
}
entryPtr->numBytes = valueLen;
entryPtr->numChars = Tcl_NumUtfChars(value, valueLen);
@@ -2955,7 +2960,8 @@ EntryFetchSelection(clientData, offset, buffer, maxBytes)
{
Entry *entryPtr = (Entry *) clientData;
int byteCount;
- char *string, *selStart, *selEnd;
+ CONST char *string;
+ CONST char *selStart, *selEnd;
if ((entryPtr->selectFirst < 0) || !(entryPtr->exportSelection)) {
return -1;
@@ -3275,7 +3281,7 @@ EntryTextVarProc(clientData, interp, name1, name2, flags)
int flags; /* Information about what happened. */
{
Entry *entryPtr = (Entry *) clientData;
- char *value;
+ CONST char *value;
/*
* If the variable is unset, then immediately recreate it unless
@@ -3392,7 +3398,7 @@ EntryValidateChange(entryPtr, change, new, index, type)
register Entry *entryPtr; /* Entry that needs validation. */
char *change; /* Characters to be added/deleted
* (NULL-terminated string). */
- char *new; /* Potential new value of entry string */
+ CONST char *new; /* Potential new value of entry string */
int index; /* index of insert/delete, -1 otherwise */
int type; /* forced, delete, insert,
* focusin or focusout */
@@ -3526,11 +3532,12 @@ EntryValidateChange(entryPtr, change, new, index, type)
static void
ExpandPercents(entryPtr, before, change, new, index, type, dsPtr)
register Entry *entryPtr; /* Entry that needs validation. */
- register char *before; /* Command containing percent
+ register CONST char *before;
+ /* Command containing percent
* expressions to be replaced. */
char *change; /* Characters to added/deleted
* (NULL-terminated string). */
- char *new; /* Potential new value of entry string */
+ CONST char *new; /* Potential new value of entry string */
int index; /* index of insert/delete */
int type; /* INSERT or DELETE */
Tcl_DString *dsPtr; /* Dynamic string in which to append
@@ -3539,7 +3546,7 @@ ExpandPercents(entryPtr, before, change, new, index, type, dsPtr)
int spaceNeeded, cvtFlags; /* Used to substitute string as proper Tcl
* list element. */
int number, length;
- register char *string;
+ register CONST char *string;
Tcl_UniChar ch;
char numStorage[2*TCL_INTEGER_SPACE];
@@ -3693,6 +3700,7 @@ Tk_SpinboxObjCmd(clientData, interp, objc, objv)
register Spinbox *sbPtr;
Tk_OptionTable optionTable;
Tk_Window tkwin;
+ char *tmp;
if (objc < 2) {
Tcl_WrongNumArgs(interp, 1, objv, "pathName ?options?");
@@ -3731,8 +3739,9 @@ Tk_SpinboxObjCmd(clientData, interp, objc, objv)
(ClientData) sbPtr, EntryCmdDeletedProc);
entryPtr->optionTable = optionTable;
entryPtr->type = TK_SPINBOX;
- entryPtr->string = (char *) ckalloc(1);
- entryPtr->string[0] = '\0';
+ tmp = (char *) ckalloc(1);
+ tmp[0] = '\0';
+ entryPtr->string = tmp;
entryPtr->selectFirst = -1;
entryPtr->selectLast = -1;
@@ -3927,7 +3936,7 @@ SpinboxWidgetObjCmd(clientData, interp, objc, objv)
Tcl_WrongNumArgs(interp, 2, objv, (char *) NULL);
goto error;
}
- Tcl_SetResult(interp, entryPtr->string, TCL_STATIC);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), entryPtr->string, -1);
break;
}
@@ -3957,7 +3966,8 @@ SpinboxWidgetObjCmd(clientData, interp, objc, objv)
}
elem = GetSpinboxElement(sbPtr, x, y);
if (elem != SEL_NONE) {
- Tcl_SetResult(interp, selElementNames[elem], TCL_VOLATILE);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp),
+ selElementNames[elem], -1);
}
break;
}
@@ -4185,9 +4195,8 @@ SpinboxWidgetObjCmd(clientData, interp, objc, objv)
goto error;
}
if (objc == 3) {
- Tcl_SetResult(interp,
- selElementNames[sbPtr->selElement],
- TCL_VOLATILE);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp),
+ selElementNames[sbPtr->selElement], -1);
} else {
int lastElement = sbPtr->selElement;
@@ -4215,7 +4224,7 @@ SpinboxWidgetObjCmd(clientData, interp, objc, objv)
if (objc == 3) {
EntryValueChanged(entryPtr, Tcl_GetString(objv[2]));
}
- Tcl_SetResult(interp, entryPtr->string, TCL_STATIC);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), entryPtr->string, -1);
break;
}
diff --git a/generic/tkFileFilter.c b/generic/tkFileFilter.c
index b9bebd7..3cbaba9 100644
--- a/generic/tkFileFilter.c
+++ b/generic/tkFileFilter.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkFileFilter.c,v 1.4 2000/07/06 03:17:43 mo Exp $
+ * RCS: @(#) $Id: tkFileFilter.c,v 1.4.6.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -17,7 +17,7 @@
static int AddClause _ANSI_ARGS_((
Tcl_Interp * interp, FileFilter * filterPtr,
- char * patternsStr, char * ostypesStr,
+ CONST char * patternsStr, CONST char * ostypesStr,
int isWindows));
static void FreeClauses _ANSI_ARGS_((FileFilter * filterPtr));
static void FreeGlobPatterns _ANSI_ARGS_((
@@ -25,7 +25,7 @@ static void FreeGlobPatterns _ANSI_ARGS_((
static void FreeMacFileTypes _ANSI_ARGS_((
FileFilterClause * clausePtr));
static FileFilter * GetFilter _ANSI_ARGS_((FileFilterList * flistPtr,
- char * name));
+ CONST char * name));
/*
*----------------------------------------------------------------------
@@ -86,8 +86,8 @@ TkGetFileFilters(interp, flistPtr, string, isWindows)
int isWindows; /* True if we are running on Windows. */
{
int listArgc;
- char ** listArgv = NULL;
- char ** typeInfo = NULL;
+ CONST char ** listArgv = NULL;
+ CONST char ** typeInfo = NULL;
int code = TCL_OK;
int i;
@@ -206,16 +206,16 @@ TkFreeFileFilters(flistPtr)
static int AddClause(interp, filterPtr, patternsStr, ostypesStr, isWindows)
Tcl_Interp * interp; /* Interpreter to use for error reporting. */
FileFilter * filterPtr; /* Stores the new filter clause */
- char * patternsStr; /* A TCL list of glob patterns. */
- char * ostypesStr; /* A TCL list of Mac OSType strings. */
+ CONST char * patternsStr; /* A TCL list of glob patterns. */
+ CONST char * ostypesStr; /* A TCL list of Mac OSType strings. */
int isWindows; /* True if we are running on Windows; False
* if we are running on the Mac; Glob
* patterns need to be processed differently
* on these two platforms */
{
- char ** globList = NULL;
+ CONST char ** globList = NULL;
int globCount;
- char ** ostypeList = NULL;
+ CONST char ** ostypeList = NULL;
int ostypeCount;
FileFilterClause * clausePtr;
int i;
@@ -358,7 +358,7 @@ static int AddClause(interp, filterPtr, patternsStr, ostypesStr, isWindows)
static FileFilter * GetFilter(flistPtr, name)
FileFilterList * flistPtr; /* The FileFilterList that contains the
* newly created filter */
- char * name; /* Name of the filter. It is usually displayed
+ CONST char * name; /* Name of the filter. It is usually displayed
* in the "File Types" listbox in the file
* dialogs. */
{
diff --git a/generic/tkFocus.c b/generic/tkFocus.c
index 44756ef..063c4d7 100644
--- a/generic/tkFocus.c
+++ b/generic/tkFocus.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkFocus.c,v 1.5 1999/08/10 16:58:37 hobbs Exp $
+ * RCS: @(#) $Id: tkFocus.c,v 1.5.16.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -121,8 +121,9 @@ Tk_FocusObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *focusOptions[] = {"-displayof", "-force", "-lastfor",
- (char *) NULL};
+ static CONST char *focusOptions[] = {
+ "-displayof", "-force", "-lastfor", (char *) NULL
+ };
Tk_Window tkwin = (Tk_Window) clientData;
TkWindow *winPtr = (TkWindow *) clientData;
TkWindow *newPtr, *focusWinPtr, *topLevelPtr;
diff --git a/generic/tkFont.c b/generic/tkFont.c
index 9d7e9ec..c9c0f08 100644
--- a/generic/tkFont.c
+++ b/generic/tkFont.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkFont.c,v 1.12.2.2 2002/01/22 01:12:39 wolfsuit Exp $
+ * RCS: @(#) $Id: tkFont.c,v 1.12.2.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -168,7 +168,7 @@ static TkStateMap xlfdSetwidthMap[] = {
* when configuring a set of font attributes.
*/
-static char *fontOpt[] = {
+static CONST char *fontOpt[] = {
"-family",
"-size",
"-weight",
@@ -479,7 +479,7 @@ Tk_FontObjCmd(clientData, interp, objc, objv)
int index;
Tk_Window tkwin;
TkFontInfo *fiPtr;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"actual", "configure", "create", "delete",
"families", "measure", "metrics", "names",
NULL
@@ -684,7 +684,7 @@ Tk_FontObjCmd(clientData, interp, objc, objv)
Tk_Font tkfont;
int skip, index, i;
CONST TkFontMetrics *fmPtr;
- static char *switches[] = {
+ static CONST char *switches[] = {
"-ascent", "-descent", "-linespace", "-fixed", NULL
};
diff --git a/generic/tkFrame.c b/generic/tkFrame.c
index 55dfc8f..4d37f0b 100644
--- a/generic/tkFrame.c
+++ b/generic/tkFrame.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkFrame.c,v 1.10 2001/09/26 21:36:19 pspjuth Exp $
+ * RCS: @(#) $Id: tkFrame.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "default.h"
@@ -718,7 +718,7 @@ FrameWidgetObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *frameOptions[] = {
+ static CONST char *frameOptions[] = {
"cget", "configure", (char *) NULL
};
enum options {
diff --git a/generic/tkGet.c b/generic/tkGet.c
index dd920be..a3b6677 100644
--- a/generic/tkGet.c
+++ b/generic/tkGet.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGet.c,v 1.6 1999/12/14 06:52:28 hobbs Exp $
+ * RCS: @(#) $Id: tkGet.c,v 1.6.8.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -37,9 +37,12 @@ static Tcl_ThreadDataKey dataKey;
* used by Tk_GetAnchorFromObj and Tk_GetJustifyFromObj.
*/
-static char *anchorStrings[] = {"n", "ne", "e", "se", "s", "sw", "w", "nw",
- "center", (char *) NULL};
-static char *justifyStrings[] = {"left", "right", "center", (char *) NULL};
+static CONST char *anchorStrings[] = {
+ "n", "ne", "e", "se", "s", "sw", "w", "nw", "center", (char *) NULL
+};
+static CONST char *justifyStrings[] = {
+ "left", "right", "center", (char *) NULL
+};
/*
@@ -545,7 +548,7 @@ Tk_GetScreenMM(interp, tkwin, string, doublePtr)
Tk_Window tkwin; /* Window whose screen determines conversion
* from centimeters and other absolute
* units. */
- char *string; /* String describing a screen distance. */
+ CONST char *string; /* String describing a screen distance. */
double *doublePtr; /* Place to store converted result. */
{
char *end;
@@ -621,7 +624,7 @@ Tk_GetPixels(interp, tkwin, string, intPtr)
Tk_Window tkwin; /* Window whose screen determines conversion
* from centimeters and other absolute
* units. */
- char *string; /* String describing a number of pixels. */
+ CONST char *string; /* String describing a number of pixels. */
int *intPtr; /* Place to store converted result. */
{
double d;
diff --git a/generic/tkGrab.c b/generic/tkGrab.c
index 7bc447d..6638e68 100644
--- a/generic/tkGrab.c
+++ b/generic/tkGrab.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGrab.c,v 1.6.6.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkGrab.c,v 1.6.6.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -202,10 +202,10 @@ Tk_GrabObjCmd(clientData, interp, objc, objv)
char *arg;
int index;
int len;
- static char *optionStrings[] = { "current", "release",
+ static CONST char *optionStrings[] = { "current", "release",
"set", "status", (char *) NULL };
- static char *flagStrings[] = { "-global", (char *) NULL };
+ static CONST char *flagStrings[] = { "-global", (char *) NULL };
enum options { GRABCMD_CURRENT, GRABCMD_RELEASE,
GRABCMD_SET, GRABCMD_STATUS };
diff --git a/generic/tkGrid.c b/generic/tkGrid.c
index 05f5a00..6449697 100644
--- a/generic/tkGrid.c
+++ b/generic/tkGrid.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGrid.c,v 1.17 2001/09/30 19:01:58 pspjuth Exp $
+ * RCS: @(#) $Id: tkGrid.c,v 1.17.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -333,7 +333,7 @@ Tk_GridObjCmd(clientData, interp, objc, objv)
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
Tk_Window tkwin = (Tk_Window) clientData;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"bbox", "columnconfigure", "configure", "forget",
"info", "location", "propagate", "remove",
"rowconfigure", "size", "slaves", (char *) NULL };
@@ -849,7 +849,7 @@ GridRowColumnConfigureCommand(tkwin, interp, objc, objv)
int ok; /* temporary TCL result code */
int i, j;
char *string;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-minsize", "-pad", "-uniform", "-weight", (char *) NULL };
enum options { ROWCOL_MINSIZE, ROWCOL_PAD, ROWCOL_UNIFORM, ROWCOL_WEIGHT };
int index;
@@ -1117,7 +1117,7 @@ GridSlavesCommand(tkwin, interp, objc, objv)
Gridder *slavePtr;
int i, value;
int row = -1, column = -1;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-column", "-row", (char *) NULL };
enum options { SLAVES_COLUMN, SLAVES_ROW };
int index;
@@ -1848,7 +1848,7 @@ ResolveConstraints(masterPtr, slotType, maxOffset)
UniformGroup *old = uniformGroupPtr;
memcpy((VOID *) new, (VOID *) old, oldSize);
if (old != uniformPre) {
- Tcl_Free((char *) old);
+ ckfree((char *) old);
}
uniformGroupPtr = new;
uniformGroupsAlloced += UNIFORM_PREALLOC;
@@ -1888,7 +1888,7 @@ ResolveConstraints(masterPtr, slotType, maxOffset)
}
if (uniformGroupPtr != uniformPre) {
- Tcl_Free((char *) uniformGroupPtr);
+ ckfree((char *) uniformGroupPtr);
}
/*
@@ -2074,7 +2074,7 @@ ResolveConstraints(masterPtr, slotType, maxOffset)
--layoutPtr;
if (layoutPtr != layoutData) {
- Tcl_Free((char *)layoutPtr);
+ ckfree((char *)layoutPtr);
}
return requiredSize;
}
@@ -2254,7 +2254,7 @@ CheckSlotData(masterPtr, slot, slotType, checkOnly)
masterPtr->masterDataPtr->columnPtr;
memcpy((VOID *) new, (VOID *) old, oldSize );
memset((VOID *) (new+numSlot), 0, newSize - oldSize );
- Tcl_Free((char *) old);
+ ckfree((char *) old);
if (slotType == ROW) {
masterPtr->masterDataPtr->rowPtr = new ;
masterPtr->masterDataPtr->rowSpace = newNumSlot ;
@@ -2405,14 +2405,14 @@ DestroyGrid(memPtr)
if (gridPtr->masterDataPtr != NULL) {
if (gridPtr->masterDataPtr->rowPtr != NULL) {
- Tcl_Free((char *) gridPtr->masterDataPtr -> rowPtr);
+ ckfree((char *) gridPtr->masterDataPtr -> rowPtr);
}
if (gridPtr->masterDataPtr->columnPtr != NULL) {
- Tcl_Free((char *) gridPtr->masterDataPtr -> columnPtr);
+ ckfree((char *) gridPtr->masterDataPtr -> columnPtr);
}
- Tcl_Free((char *) gridPtr->masterDataPtr);
+ ckfree((char *) gridPtr->masterDataPtr);
}
- Tcl_Free((char *) gridPtr);
+ ckfree((char *) gridPtr);
}
/*
@@ -2536,7 +2536,7 @@ ConfigureSlaves(interp, tkwin, objc, objv)
char *lastWindow; /* use this window to base current
* Row/col on */
int numSkip; /* number of 'x' found */
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-column", "-columnspan", "-in", "-ipadx", "-ipady",
"-padx", "-pady", "-row", "-rowspan", "-sticky",
(char *) NULL };
@@ -2554,7 +2554,7 @@ ConfigureSlaves(interp, tkwin, objc, objv)
firstChar = 0;
for (numWindows = i = 0; i < objc; i++) {
prevChar = firstChar;
- string = Tcl_GetStringFromObj(objv[i], &length);
+ string = Tcl_GetStringFromObj(objv[i], (int *) &length);
firstChar = string[0];
if (firstChar == '.') {
diff --git a/generic/tkImage.c b/generic/tkImage.c
index b629816..9a31077 100644
--- a/generic/tkImage.c
+++ b/generic/tkImage.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkImage.c,v 1.12 2001/04/12 12:30:42 dkf Exp $
+ * RCS: @(#) $Id: tkImage.c,v 1.12.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -160,7 +160,7 @@ Tk_ImageObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument strings. */
{
- static char *imageOptions[] = {
+ static CONST char *imageOptions[] = {
"create", "delete", "height", "inuse", "names", "type", "types",
"width", (char *) NULL
};
@@ -368,12 +368,8 @@ Tk_ImageObjCmd(clientData, interp, objc, objv)
return TCL_ERROR;
}
masterPtr = (ImageMaster *) Tcl_GetHashValue(hPtr);
- if (masterPtr->typePtr != NULL) {
- for (imagePtr = masterPtr->instancePtr; imagePtr != NULL;
- imagePtr = imagePtr->nextPtr) {
- count = 1;
- break;
- }
+ if (masterPtr->typePtr != NULL && masterPtr->instancePtr != NULL) {
+ count = 1;
}
Tcl_SetBooleanObj(Tcl_GetObjResult(interp), count);
break;
diff --git a/generic/tkImgBmap.c b/generic/tkImgBmap.c
index 8f03e74..a4ad503 100644
--- a/generic/tkImgBmap.c
+++ b/generic/tkImgBmap.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkImgBmap.c,v 1.12 2001/07/14 15:53:53 drh Exp $
+ * RCS: @(#) $Id: tkImgBmap.c,v 1.12.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -498,7 +498,8 @@ TkGetBitmapData(interp, string, fileName, widthPtr, heightPtr,
int *hotXPtr, *hotYPtr; /* Position of hot spot or -1,-1. */
{
int width, height, numBytes, hotX, hotY;
- char *p, *end, *expandedFileName;
+ CONST char *expandedFileName;
+ char *p, *end;
ParseInfo pi;
char *data = NULL;
Tcl_DString buffer;
@@ -761,7 +762,7 @@ ImgBmapCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *bmapOptions[] = {"cget", "configure", (char *) NULL};
+ static CONST char *bmapOptions[] = {"cget", "configure", (char *) NULL};
BitmapMaster *masterPtr = (BitmapMaster *) clientData;
int code, index;
diff --git a/generic/tkImgGIF.c b/generic/tkImgGIF.c
index 108c7ad..089aacb 100644
--- a/generic/tkImgGIF.c
+++ b/generic/tkImgGIF.c
@@ -29,7 +29,7 @@
* | provided "as is" without express or implied warranty. |
* +-------------------------------------------------------------------+
*
- * RCS: @(#) $Id: tkImgGIF.c,v 1.18 2001/09/14 20:35:58 andreas_kupries Exp $
+ * RCS: @(#) $Id: tkImgGIF.c,v 1.18.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
/*
@@ -249,7 +249,7 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY,
int bitPixel;
unsigned char colorMap[MAXCOLORMAPSIZE][4];
int transparent = -1;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-index", NULL
};
diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c
index 2a9d1df..1846990 100644
--- a/generic/tkImgPhoto.c
+++ b/generic/tkImgPhoto.c
@@ -7,6 +7,7 @@
*
* Copyright (c) 1994 The Australian National University.
* Copyright (c) 1994-1997 Sun Microsystems, Inc.
+ * Copyright (c) 2002 Donal K. Fellows
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -15,7 +16,7 @@
* Department of Computer Science,
* Australian National University.
*
- * RCS: @(#) $Id: tkImgPhoto.c,v 1.24 2001/09/14 20:35:58 andreas_kupries Exp $
+ * RCS: @(#) $Id: tkImgPhoto.c,v 1.24.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -563,13 +564,14 @@ ImgPhotoCmd(clientData, interp, objc, objv)
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
int oldformat = 0;
- static char *photoOptions[] = {
+ static CONST char *photoOptions[] = {
"blank", "cget", "configure", "copy", "data", "get", "put",
- "read", "redither", "write", (char *) NULL
+ "read", "redither", "transparency", "write", (char *) NULL
};
enum options {
PHOTO_BLANK, PHOTO_CGET, PHOTO_CONFIGURE, PHOTO_COPY, PHOTO_DATA,
- PHOTO_GET, PHOTO_PUT, PHOTO_READ, PHOTO_REDITHER, PHOTO_WRITE
+ PHOTO_GET, PHOTO_PUT, PHOTO_READ, PHOTO_REDITHER, PHOTO_TRANS,
+ PHOTO_WRITE
};
PhotoMaster *masterPtr = (PhotoMaster *) clientData;
@@ -578,8 +580,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
int dataWidth, dataHeight;
struct SubcommandOptions options;
int listArgc;
- char **listArgv;
- char **srcArgv;
+ CONST char **listArgv;
+ CONST char **srcArgv;
unsigned char *pixelPtr;
Tk_PhotoImageBlock block;
Tk_Window tkwin;
@@ -607,8 +609,9 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
return proc(clientData, interp, objc, objv);
}
+
switch ((enum options) index) {
- case PHOTO_BLANK: {
+ case PHOTO_BLANK:
/*
* photo blank command - just call Tk_PhotoBlank.
*/
@@ -620,9 +623,10 @@ ImgPhotoCmd(clientData, interp, objc, objv)
return TCL_ERROR;
}
break;
- }
- case PHOTO_CGET: {
+
+ case PHOTO_CGET: {
char *arg;
+
if (objc != 3) {
Tcl_WrongNumArgs(interp, 2, objv, "option");
return TCL_ERROR;
@@ -643,8 +647,9 @@ ImgPhotoCmd(clientData, interp, objc, objv)
Tk_ConfigureValue(interp, Tk_MainWindow(interp), configSpecs,
(char *) masterPtr, Tcl_GetString(objv[2]), 0);
break;
- }
- case PHOTO_CONFIGURE: {
+ }
+
+ case PHOTO_CONFIGURE:
/*
* photo configure command - handle this in the standard way.
*/
@@ -676,39 +681,38 @@ ImgPhotoCmd(clientData, interp, objc, objv)
return TCL_OK;
}
if (objc == 3) {
- char *arg = Tcl_GetStringFromObj(objv[2], (int *) &length);
- if (!strncmp(arg, "-data", length)) {
- Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
- "-data {} {} {}", (char *) NULL);
- if (masterPtr->dataString) {
- Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp),
- masterPtr->dataString);
- } else {
+ char *arg = Tcl_GetStringFromObj(objv[2], (int *) &length);
+ if (!strncmp(arg, "-data", length)) {
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
- " {}", (char *) NULL);
- }
- return TCL_OK;
- } else if (!strncmp(arg, "-format", length)) {
- Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
- "-format {} {} {}", (char *) NULL);
- if (masterPtr->format) {
- Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp),
- masterPtr->format);
- } else {
+ "-data {} {} {}", (char *) NULL);
+ if (masterPtr->dataString) {
+ Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp),
+ masterPtr->dataString);
+ } else {
+ Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+ " {}", (char *) NULL);
+ }
+ return TCL_OK;
+ } else if (!strncmp(arg, "-format", length)) {
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
- " {}", (char *) NULL);
+ "-format {} {} {}", (char *) NULL);
+ if (masterPtr->format) {
+ Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp),
+ masterPtr->format);
+ } else {
+ Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+ " {}", (char *) NULL);
+ }
+ return TCL_OK;
+ } else {
+ return Tk_ConfigureInfo(interp, Tk_MainWindow(interp),
+ configSpecs, (char *) masterPtr, arg, 0);
}
- return TCL_OK;
- } else {
- return Tk_ConfigureInfo(interp, Tk_MainWindow(interp),
- configSpecs, (char *) masterPtr, arg, 0);
- }
}
return ImgPhotoConfigureMaster(interp, masterPtr, objc-2, objv+2,
TK_CONFIG_ARGV_ONLY);
- break;
- }
- case PHOTO_COPY: {
+
+ case PHOTO_COPY:
/*
* photo copy command - first parse options.
*/
@@ -734,7 +738,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
* Check the values given for the -from option.
*/
- if ((srcHandle = Tk_FindPhoto(interp, Tcl_GetString(options.name))) == NULL) {
+ srcHandle = Tk_FindPhoto(interp, Tcl_GetString(options.name));
+ if (srcHandle == NULL) {
Tcl_AppendResult(interp, "image \"",
Tcl_GetString(options.name), "\" doesn't",
" exist or is not a photo image", (char *) NULL);
@@ -753,11 +758,11 @@ ImgPhotoCmd(clientData, interp, objc, objv)
* Fill in default values for unspecified parameters.
*/
- if (((options.options & OPT_FROM) == 0) || (options.fromX2 < 0)) {
+ if (!(options.options & OPT_FROM) || (options.fromX2 < 0)) {
options.fromX2 = block.width;
options.fromY2 = block.height;
}
- if (((options.options & OPT_TO) == 0) || (options.toX2 < 0)) {
+ if (!(options.options & OPT_TO) || (options.toX2 < 0)) {
width = options.fromX2 - options.fromX;
if (options.subsampleX > 0) {
width = (width + options.subsampleX - 1) / options.subsampleX;
@@ -794,7 +799,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
*/
block.pixelPtr += options.fromX * block.pixelSize
- + options.fromY * block.pitch;
+ + options.fromY * block.pitch;
block.width = options.fromX2 - options.fromX;
block.height = options.fromY2 - options.fromY;
Tk_PhotoPutZoomedBlock((Tk_PhotoHandle) masterPtr, &block,
@@ -803,8 +808,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
options.subsampleX, options.subsampleY);
break;
- }
- case PHOTO_DATA: {
+
+ case PHOTO_DATA: {
char *data;
/*
@@ -877,7 +882,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
data = ImgGetPhoto(masterPtr, &block, &options);
- result = ((int (*) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *formatString,
+ result = ((int (*) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *formatString,
Tk_PhotoImageBlock *blockPtr, VOID *dummy))) stringWriteProc)
(interp, options.format, &block, (VOID *) NULL);
if (options.background) {
@@ -889,6 +894,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
return result;
break;
}
+
case PHOTO_GET: {
/*
* photo get command - first parse and check parameters.
@@ -921,7 +927,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
Tcl_AppendResult(interp, string, (char *) NULL);
break;
}
- case PHOTO_PUT: {
+
+ case PHOTO_PUT:
/*
* photo put command - first parse the options and colors specified.
*/
@@ -930,7 +937,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
memset((VOID *) &options, 0, sizeof(options));
options.name = NULL;
if (ParseSubcommandOptions(&options, interp, OPT_TO|OPT_FORMAT,
- &index, objc, objv) != TCL_OK) {
+ &index, objc, objv) != TCL_OK) {
return TCL_ERROR;
}
if ((options.name == NULL) || (index < objc)) {
@@ -941,8 +948,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
if (MatchStringFormat(interp, options.name ? objv[2]:NULL,
options.format, &imageFormat, &imageWidth,
&imageHeight, &oldformat) == TCL_OK) {
- Tcl_Obj *format;
- Tcl_Obj *data;
+ Tcl_Obj *format, *data;
+
if (((options.options & OPT_TO) == 0) || (options.toX2 < 0)) {
options.toX2 = options.toX + imageWidth;
options.toY2 = options.toY + imageHeight;
@@ -963,8 +970,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
if ((*imageFormat->stringReadProc)(interp, data,
format, (Tk_PhotoHandle) masterPtr,
- options.toX, options.toY, imageWidth, imageHeight, 0, 0)
- != TCL_OK) {
+ options.toX, options.toY, imageWidth, imageHeight,
+ 0, 0) != TCL_OK) {
return TCL_ERROR;
}
masterPtr->flags |= IMAGE_CHANGED;
@@ -975,8 +982,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
Tcl_ResetResult(interp);
if (Tcl_SplitList(interp, Tcl_GetString(options.name),
- &dataHeight, &srcArgv)
- != TCL_OK) {
+ &dataHeight, &srcArgv) != TCL_OK) {
return TCL_ERROR;
}
tkwin = Tk_MainWindow(interp);
@@ -990,17 +996,14 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
if (y == 0) {
dataWidth = listArgc;
- pixelPtr = (unsigned char *) ckalloc((unsigned)
- dataWidth * dataHeight * 3);
+ pixelPtr = (unsigned char *)
+ ckalloc((unsigned) dataWidth * dataHeight * 3);
block.pixelPtr = pixelPtr;
- } else {
- if (listArgc != dataWidth) {
- Tcl_AppendResult(interp, "all elements of color list must",
- " have the same number of elements",
- (char *) NULL);
- ckfree((char *) listArgv);
- break;
- }
+ } else if (listArgc != dataWidth) {
+ Tcl_AppendResult(interp, "all elements of color list must",
+ " have the same number of elements", (char *) NULL);
+ ckfree((char *) listArgv);
+ break;
}
for (x = 0; x < dataWidth; ++x) {
if (!XParseColor(Tk_Display(tkwin), Tk_Colormap(tkwin),
@@ -1014,8 +1017,9 @@ ImgPhotoCmd(clientData, interp, objc, objv)
*pixelPtr++ = color.blue >> 8;
}
ckfree((char *) listArgv);
- if (x < dataWidth)
+ if (x < dataWidth) {
break;
+ }
}
ckfree((char *) srcArgv);
if (y < dataHeight || dataHeight == 0 || dataWidth == 0) {
@@ -1033,7 +1037,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
* copy the block in using Tk_PhotoPutBlock.
*/
- if (((options.options & OPT_TO) == 0) || (options.toX2 < 0)) {
+ if (!(options.options & OPT_TO) || (options.toX2 < 0)) {
options.toX2 = options.toX + dataWidth;
options.toY2 = options.toY + dataHeight;
}
@@ -1050,13 +1054,14 @@ ImgPhotoCmd(clientData, interp, objc, objv)
options.toY2 - options.toY);
ckfree((char *) block.pixelPtr);
break;
- }
- case PHOTO_READ: {
+
+ case PHOTO_READ: {
+ Tcl_Obj *format;
+
/*
* photo read command - first parse the options specified.
*/
- Tcl_Obj *format;
index = 2;
memset((VOID *) &options, 0, sizeof(options));
options.name = NULL;
@@ -1067,8 +1072,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
return TCL_ERROR;
}
if ((options.name == NULL) || (index < objc)) {
- Tcl_WrongNumArgs(interp, 2, objv,
- "fileName ?options?");
+ Tcl_WrongNumArgs(interp, 2, objv, "fileName ?options?");
return TCL_ERROR;
}
@@ -1078,7 +1082,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
if (Tcl_IsSafe(interp)) {
Tcl_AppendResult(interp, "can't get image from a file in a",
- " safe interpreter", (char *) NULL);
+ " safe interpreter", (char *) NULL);
return TCL_ERROR;
}
@@ -1103,8 +1107,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
if (MatchFileFormat(interp, chan,
- Tcl_GetString(options.name), options.format,
- &imageFormat, &imageWidth, &imageHeight, &oldformat) != TCL_OK) {
+ Tcl_GetString(options.name), options.format, &imageFormat,
+ &imageWidth, &imageHeight, &oldformat) != TCL_OK) {
Tcl_Close(NULL, chan);
return TCL_ERROR;
}
@@ -1156,42 +1160,179 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
return result;
break;
- }
- case PHOTO_REDITHER: {
- if (objc == 2) {
+ }
+
+ case PHOTO_REDITHER:
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 2, objv, (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ /*
+ * Call Dither if any part of the image is not correctly
+ * dithered at present.
+ */
+
+ x = masterPtr->ditherX;
+ y = masterPtr->ditherY;
+ if (masterPtr->ditherX != 0) {
+ Tk_DitherPhoto((Tk_PhotoHandle) masterPtr, x, y,
+ masterPtr->width - x, 1);
+ }
+ if (masterPtr->ditherY < masterPtr->height) {
+ x = 0;
+ Tk_DitherPhoto((Tk_PhotoHandle)masterPtr, 0,
+ masterPtr->ditherY, masterPtr->width,
+ masterPtr->height - masterPtr->ditherY);
+ }
+
+ if (y < masterPtr->height) {
/*
- * Call Dither if any part of the image is not correctly
- * dithered at present.
+ * Tell the core image code that part of the image has changed.
*/
- x = masterPtr->ditherX;
- y = masterPtr->ditherY;
- if (masterPtr->ditherX != 0) {
- Tk_DitherPhoto((Tk_PhotoHandle) masterPtr, x, y, masterPtr->width - x, 1);
+ Tk_ImageChanged(masterPtr->tkMaster, x, y,
+ (masterPtr->width - x), (masterPtr->height - y),
+ masterPtr->width, masterPtr->height);
+ }
+ break;
+
+ case PHOTO_TRANS: {
+ static CONST char *photoTransOptions[] = {
+ "get", "set", (char *) NULL
+ };
+ enum transOptions {
+ PHOTO_TRANS_GET, PHOTO_TRANS_SET
+ };
+
+ if (objc < 3) {
+ Tcl_WrongNumArgs(interp, 2, objv, "option ?arg arg ...?");
+ return TCL_ERROR;
+ }
+ if (Tcl_GetIndexFromObj(interp, objv[2], photoTransOptions, "option",
+ 0, &index) != TCL_OK) {
+ return TCL_ERROR;
+ }
+
+ switch ((enum transOptions) index) {
+ case PHOTO_TRANS_GET: {
+ XRectangle testBox;
+ TkRegion testRegion;
+
+ if (objc != 5) {
+ Tcl_WrongNumArgs(interp, 3, objv, "x y");
+ return TCL_ERROR;
+ }
+ if ((Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK)
+ || (Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK)) {
+ return TCL_ERROR;
+ }
+ if ((x < 0) || (x >= masterPtr->width)
+ || (y < 0) || (y >= masterPtr->height)) {
+ Tcl_AppendResult(interp, Tcl_GetString(objv[0]),
+ " transparency get: coordinates out of range",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ testBox.x = x;
+ testBox.y = y;
+ testBox.width = 1;
+ testBox.height = 1;
+ /* What a way to do a test! */
+ testRegion = TkCreateRegion();
+ TkUnionRectWithRegion(&testBox, testRegion, testRegion);
+ TkIntersectRegion(testRegion, masterPtr->validRegion, testRegion);
+ TkClipBox(testRegion, &testBox);
+ TkDestroyRegion(testRegion);
+
+ Tcl_SetBooleanObj(Tcl_GetObjResult(interp),
+ (testBox.width==0 && testBox.height==0));
+ return TCL_OK;
+ }
+
+ case PHOTO_TRANS_SET: {
+ int transFlag;
+ XRectangle setBox;
+
+ if (objc != 6) {
+ Tcl_WrongNumArgs(interp, 3, objv, "x y boolean");
+ return TCL_ERROR;
}
- if (masterPtr->ditherY < masterPtr->height) {
- x = 0;
- Tk_DitherPhoto((Tk_PhotoHandle)masterPtr, 0, masterPtr->ditherY, masterPtr->width,
- masterPtr->height - masterPtr->ditherY);
+ if ((Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK)
+ || (Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK)
+ || (Tcl_GetBooleanFromObj(interp, objv[5],
+ &transFlag) != TCL_OK)) {
+ return TCL_ERROR;
+ }
+ if ((x < 0) || (x >= masterPtr->width)
+ || (y < 0) || (y >= masterPtr->height)) {
+ Tcl_AppendResult(interp, Tcl_GetString(objv[0]),
+ " transparency set: coordinates out of range",
+ (char *) NULL);
+ return TCL_ERROR;
}
- if (y < masterPtr->height) {
+ if (transFlag) {
/*
- * Tell the core image code that part of the image has changed.
+ * Make pixel transparent. Do by building a mask for
+ * all the other pixels in the image and setting the
+ * validRegion to the intersection of that with the
+ * old validRegion. There isn't a neater way to do
+ * this given the limited set of operations available
+ * in the platform-independent region operations.
*/
-
- Tk_ImageChanged(masterPtr->tkMaster, x, y,
- (masterPtr->width - x), (masterPtr->height - y),
- masterPtr->width, masterPtr->height);
+ TkRegion setRegion = TkCreateRegion();
+
+ if (y > 0) {
+ setBox.x = 0;
+ setBox.y = 0;
+ setBox.width = masterPtr->width;
+ setBox.height = y;
+ TkUnionRectWithRegion(&setBox, setRegion, setRegion);
+ }
+ if (x > 0) {
+ setBox.x = 0;
+ setBox.y = y;
+ setBox.width = x;
+ setBox.height = 1;
+ TkUnionRectWithRegion(&setBox, setRegion, setRegion);
+ }
+ if (x < masterPtr->width-1) {
+ setBox.x = x+1;
+ setBox.y = y;
+ setBox.width = masterPtr->width-1 - x;
+ setBox.height = 1;
+ TkUnionRectWithRegion(&setBox, setRegion, setRegion);
+ }
+ if (y < masterPtr->height-1) {
+ setBox.x = 0;
+ setBox.y = y+1;
+ setBox.width = masterPtr->width;
+ setBox.height = masterPtr->height-1 - y;
+ TkUnionRectWithRegion(&setBox, setRegion, setRegion);
+ }
+ TkIntersectRegion(masterPtr->validRegion, setRegion,
+ masterPtr->validRegion);
+ TkDestroyRegion(setRegion);
+ } else {
+ /*
+ * Make pixel opaque.
+ */
+ setBox.x = x;
+ setBox.y = y;
+ setBox.width = 1;
+ setBox.height = 1;
+ TkUnionRectWithRegion(&setBox, masterPtr->validRegion,
+ masterPtr->validRegion);
}
+ }
- } else {
- Tcl_WrongNumArgs(interp, 2, objv, (char *) NULL);
- return TCL_ERROR;
}
- break;
- }
- case PHOTO_WRITE: {
+ return TCL_OK;
+ }
+
+ case PHOTO_WRITE: {
char *data;
Tcl_Obj *format;
@@ -1201,7 +1342,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
if (Tcl_IsSafe(interp)) {
Tcl_AppendResult(interp, "can't write image to a file in a",
- " safe interpreter", (char *) NULL);
+ " safe interpreter", (char *) NULL);
return TCL_ERROR;
}
@@ -1235,7 +1376,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
* Fill in default values for unspecified parameters.
*/
- if (((options.options & OPT_FROM) == 0) || (options.fromX2 < 0)) {
+ if (!(options.options & OPT_FROM) || (options.fromX2 < 0)) {
options.fromX2 = masterPtr->width;
options.fromY2 = masterPtr->height;
}
@@ -1247,7 +1388,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
matched = 0;
for (imageFormat = tsdPtr->formatList; imageFormat != NULL;
- imageFormat = imageFormat->nextPtr) {
+ imageFormat = imageFormat->nextPtr) {
if ((options.format == NULL)
|| (strncasecmp(Tcl_GetString(options.format),
imageFormat->name, strlen(imageFormat->name)) == 0)) {
@@ -1258,18 +1399,18 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
}
if (imageFormat == NULL) {
- oldformat = 1;
- for (imageFormat = tsdPtr->oldFormatList; imageFormat != NULL;
- imageFormat = imageFormat->nextPtr) {
- if ((options.format == NULL)
- || (strncasecmp(Tcl_GetString(options.format),
- imageFormat->name, strlen(imageFormat->name)) == 0)) {
- matched = 1;
- if (imageFormat->fileWriteProc != NULL) {
- break;
+ oldformat = 1;
+ for (imageFormat = tsdPtr->oldFormatList; imageFormat != NULL;
+ imageFormat = imageFormat->nextPtr) {
+ if ((options.format == NULL)
+ || (strncasecmp(Tcl_GetString(options.format),
+ imageFormat->name, strlen(imageFormat->name)) == 0)) {
+ matched = 1;
+ if (imageFormat->fileWriteProc != NULL) {
+ break;
+ }
}
}
- }
}
if (imageFormat == NULL) {
if (options.format == NULL) {
@@ -1299,8 +1440,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
format = (Tcl_Obj *) Tcl_GetString(options.format);
}
result = (*imageFormat->fileWriteProc)(interp,
- Tcl_GetString(options.name),
- format, &block);
+ Tcl_GetString(options.name), format, &block);
if (options.background) {
Tk_FreeColor(options.background);
}
@@ -1308,10 +1448,9 @@ ImgPhotoCmd(clientData, interp, objc, objv)
ckfree(data);
}
return result;
- break;
- }
}
+ }
return TCL_OK;
}
@@ -2534,6 +2673,10 @@ ImgPhotoInstanceSetSize(instancePtr)
(masterPtr->width > 0) ? masterPtr->width: 1,
(masterPtr->height > 0) ? masterPtr->height: 1,
instancePtr->visualInfo.depth);
+ if(!newPixmap) {
+ panic("Fail to create pixmap with Tk_GetPixmap in ImgPhotoInstanceSetSize.\n");
+ return;
+ }
/*
* The following is a gross hack needed to properly support colormaps
diff --git a/generic/tkInt.decls b/generic/tkInt.decls
index 02de437..44d4afe 100644
--- a/generic/tkInt.decls
+++ b/generic/tkInt.decls
@@ -9,7 +9,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: tkInt.decls,v 1.21.2.2 2001/10/17 07:02:06 wolfsuit Exp $
+# RCS: @(#) $Id: tkInt.decls,v 1.21.2.3 2002/02/05 02:25:15 wolfsuit Exp $
library tk
@@ -178,7 +178,8 @@ declare 32 generic {
}
declare 33 generic {
- char * TkGetDefaultScreenName (Tcl_Interp *interp, char *screenName)
+ CONST char * TkGetDefaultScreenName (Tcl_Interp *interp, \
+ CONST char *screenName)
}
declare 34 generic {
@@ -287,7 +288,7 @@ declare 57 generic {
}
declare 58 generic {
- void TkpDisplayWarning (char *msg, char *title)
+ void TkpDisplayWarning (CONST char *msg, CONST char *title)
}
declare 59 generic {
@@ -328,7 +329,7 @@ declare 67 generic {
}
declare 68 generic {
- TkDisplay * TkpOpenDisplay (char *display_name)
+ TkDisplay * TkpOpenDisplay (CONST char *display_name)
}
declare 69 generic {
@@ -556,9 +557,10 @@ declare 119 {mac aqua win} {
TkRegion src, TkRegion dr_return)
}
-declare 120 {mac macosx} {
- void TkGenerateActivateEvents (TkWindow *winPtr, int active)
-}
+# removed duplicate from tkIntPlat table
+#declare 120 {mac macosx} {
+# void TkGenerateActivateEvents (TkWindow *winPtr, int active)
+#}
declare 121 {mac macosx} {
Pixmap TkpCreateNativeBitmap (Display *display, char * source)
@@ -568,48 +570,50 @@ declare 122 {mac macosx} {
void TkpDefineNativeBitmaps (void)
}
-declare 123 {mac macosx} {
- unsigned long TkpGetMS (void)
-}
+# removed duplicate from tkIntPlat table
+#declare 123 {mac macosx} {
+# unsigned long TkpGetMS (void)
+#}
declare 124 {mac macosx} {
Pixmap TkpGetNativeAppBitmap (Display *display, \
CONST char *name, int *width, int *height)
}
-declare 125 {mac macosx} {
- void TkPointerDeadWindow (TkWindow *winPtr)
-}
-
-declare 126 {mac macosx} {
- void TkpSetCapture (TkWindow *winPtr)
-}
-
-declare 127 {mac macosx} {
- void TkpSetCursor (TkpCursor cursor)
-}
-
-declare 128 {mac macosx} {
- void TkpWmSetState (TkWindow *winPtr, int state)
-}
-
-declare 130 {mac macosx} {
- Window TkGetTransientMaster (TkWindow *winPtr)
-}
-
-declare 131 {mac macosx} {
- int TkGenerateButtonEvent (int x, int y, \
- Window window, unsigned int state)
-}
-
-declare 133 {mac macosx} {
- void TkGenWMDestroyEvent (Tk_Window tkwin)
-}
-
-declare 134 {mac macosx} {
- void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
- int width, int height, int flags)
-}
+# removed duplicates from tkIntPlat table
+#declare 125 {mac macosx} {
+# void TkPointerDeadWindow (TkWindow *winPtr)
+#}
+#
+#declare 126 {mac macosx} {
+# void TkpSetCapture (TkWindow *winPtr)
+#}
+#
+#declare 127 {mac macosx} {
+# void TkpSetCursor (TkpCursor cursor)
+#}
+#
+#declare 128 {mac macosx} {
+# void TkpWmSetState (TkWindow *winPtr, int state)
+#}
+#
+#declare 130 {mac macosx} {
+# Window TkGetTransientMaster (TkWindow *winPtr)
+#}
+#
+#declare 131 {mac macosx} {
+# int TkGenerateButtonEvent (int x, int y, \
+# Window window, unsigned int state)
+#}
+#
+#declare 133 {mac macosx} {
+# void TkGenWMDestroyEvent (Tk_Window tkwin)
+#}
+#
+#declare 134 {mac macosx} {
+# void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
+# int width, int height, int flags)
+#}
declare 135 generic {
void TkpDrawHighlightBorder (Tk_Window tkwin, GC fgGC, GC bgGC, \
@@ -637,6 +641,10 @@ declare 140 generic {
TkRegion TkPhotoGetValidRegion (Tk_PhotoHandle handle)
}
+declare 141 generic {
+ TkWindow ** TkWmStackorderToplevel(TkWindow *parentPtr)
+}
+
##############################################################################
# Define the platform specific internal Tcl interface. These functions are
@@ -833,13 +841,14 @@ declare 0 mac {
void TkGenerateActivateEvents (TkWindow *winPtr, int active)
}
-declare 1 mac {
- Pixmap TkpCreateNativeBitmap (Display *display, char * source)
-}
-
-declare 2 mac {
- void TkpDefineNativeBitmaps (void)
-}
+# removed duplicates from tkInt table
+#declare 1 {mac macosx} {
+# Pixmap TkpCreateNativeBitmap (Display *display, char * source)
+#}
+#
+#declare 2 {mac macosx} {
+# void TkpDefineNativeBitmaps (void)
+#}
declare 3 mac {
unsigned long TkpGetMS (void)
@@ -878,10 +887,11 @@ declare 16 mac {
void TkGenWMDestroyEvent (Tk_Window tkwin)
}
-declare 17 mac {
- void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
- int width, int height, int flags)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 17 mac {
+# void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
+# int width, int height, int flags)
+#}
declare 18 mac {
unsigned int TkMacButtonKeyState (void)
@@ -891,9 +901,10 @@ declare 19 mac {
void TkMacClearMenubarActive (void)
}
-declare 20 mac {
- int TkMacConvertEvent (EventRecord *eventPtr)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 20 mac {
+# int TkMacConvertEvent (EventRecord *eventPtr)
+#}
declare 21 mac {
int TkMacDispatchMenuEvent (int menuID, int index)
@@ -903,17 +914,19 @@ declare 22 mac {
void TkMacInstallCursor (int resizeOverride)
}
-declare 23 mac {
- int TkMacConvertTkEvent (EventRecord *eventPtr, Window window)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 23 mac {
+# int TkMacConvertTkEvent (EventRecord *eventPtr, Window window)
+#}
declare 24 mac {
void TkMacHandleTearoffMenu (void)
}
-declare 26 mac {
- void TkMacInvalClipRgns (TkWindow *winPtr)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 26 mac {
+# void TkMacInvalClipRgns (TkWindow *winPtr)
+#}
declare 27 mac {
void TkMacDoHLEvent (EventRecord *theEvent)
@@ -923,9 +936,10 @@ declare 29 mac {
Time TkMacGenerateTime (void)
}
-declare 30 mac {
- GWorldPtr TkMacGetDrawablePort (Drawable drawable)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 30 mac {
+# GWorldPtr TkMacGetDrawablePort (Drawable drawable)
+#}
declare 31 mac {
TkWindow * TkMacGetScrollbarGrowWindow (TkWindow *winPtr)
@@ -943,17 +957,18 @@ declare 34 mac {
void TkMacHandleMenuSelect (long mResult, int optionKeyPressed)
}
-declare 35 mac {
- int TkMacHaveAppearance (void)
-}
-
-declare 36 mac {
- void TkMacInitAppleEvents (Tcl_Interp *interp)
-}
-
-declare 37 mac {
- void TkMacInitMenus (Tcl_Interp *interp)
-}
+# removed duplicates from tkPlat table (tk.decls)
+#declare 35 mac {
+# int TkMacHaveAppearance (void)
+#}
+#
+#declare 36 mac {
+# void TkMacInitAppleEvents (Tcl_Interp *interp)
+#}
+#
+#declare 37 mac {
+# void TkMacInitMenus (Tcl_Interp *interp)
+#}
declare 38 mac {
void TkMacInvalidateWindow (MacDrawable *macWin, int flag)
@@ -1056,6 +1071,10 @@ declare 65 mac {
void TkMacPreprocessMenu (void)
}
+declare 66 mac {
+ int TkpIsWindowFloating (WindowRef window)
+}
+
########################
# Mac OS X specific functions
@@ -1252,6 +1271,27 @@ declare 47 aqua {
Tk_Window TkMacOSXGetCapture (void)
}
+declare 49 aqua {
+ Window TkGetTransientMaster (TkWindow *winPtr)
+}
+
+declare 50 aqua {
+ int TkGenerateButtonEvent (int x, int y, \
+ Window window, unsigned int state)
+}
+
+declare 51 aqua {
+ void TkGenWMDestroyEvent (Tk_Window tkwin)
+}
+
+declare 52 aqua {
+ void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
+ int width, int height, int flags)
+}
+
+declare 53 aqua {
+ unsigned long TkpGetMS (void)
+}
##############################################################################
@@ -1545,7 +1585,7 @@ declare 61 win {
}
declare 62 win {
- void XSetCommand (Display* d, Window w, char** c, int i)
+ void XSetCommand (Display* d, Window w, CONST char** c, int i)
}
declare 63 win {
diff --git a/generic/tkInt.h b/generic/tkInt.h
index 440c339..4fd3b46 100644
--- a/generic/tkInt.h
+++ b/generic/tkInt.h
@@ -11,7 +11,7 @@
* 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.40 2001/09/26 21:36:19 pspjuth Exp $
+ * RCS: $Id: tkInt.h,v 1.40.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#ifndef _TKINT
@@ -1035,8 +1035,8 @@ EXTERN int Tk_WinfoObjCmd _ANSI_ARGS_((ClientData clientData,
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 TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,
+ int devId, CONST char *buffer, long size));
EXTERN void TkEventInit _ANSI_ARGS_((void));
diff --git a/generic/tkIntDecls.h b/generic/tkIntDecls.h
index 98f871e..a410c00 100644
--- a/generic/tkIntDecls.h
+++ b/generic/tkIntDecls.h
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkIntDecls.h,v 1.13.2.3 2001/11/11 17:58:53 wolfsuit Exp $
+ * RCS: @(#) $Id: tkIntDecls.h,v 1.13.2.4 2002/02/05 02:25:15 wolfsuit Exp $
*/
#ifndef _TKINTDECLS
@@ -141,8 +141,8 @@ EXTERN void TkGetButtPoints _ANSI_ARGS_((double p1[],
EXTERN TkCursor * TkGetCursorByName _ANSI_ARGS_((Tcl_Interp * interp,
Tk_Window tkwin, Tk_Uid string));
/* 33 */
-EXTERN char * TkGetDefaultScreenName _ANSI_ARGS_((
- Tcl_Interp * interp, char * screenName));
+EXTERN CONST char * TkGetDefaultScreenName _ANSI_ARGS_((
+ Tcl_Interp * interp, CONST char * screenName));
/* 34 */
EXTERN TkDisplay * TkGetDisplay _ANSI_ARGS_((Display * display));
/* 35 */
@@ -214,8 +214,8 @@ EXTERN void TkpCloseDisplay _ANSI_ARGS_((TkDisplay * dispPtr));
EXTERN void TkpClaimFocus _ANSI_ARGS_((TkWindow * topLevelPtr,
int force));
/* 58 */
-EXTERN void TkpDisplayWarning _ANSI_ARGS_((char * msg,
- char * title));
+EXTERN void TkpDisplayWarning _ANSI_ARGS_((CONST char * msg,
+ CONST char * title));
/* 59 */
EXTERN void TkpGetAppName _ANSI_ARGS_((Tcl_Interp * interp,
Tcl_DString * name));
@@ -241,7 +241,8 @@ EXTERN Window TkpMakeWindow _ANSI_ARGS_((TkWindow * winPtr,
EXTERN void TkpMenuNotifyToplevelCreate _ANSI_ARGS_((
Tcl_Interp * interp1, char * menuName));
/* 68 */
-EXTERN TkDisplay * TkpOpenDisplay _ANSI_ARGS_((char * display_name));
+EXTERN TkDisplay * TkpOpenDisplay _ANSI_ARGS_((
+ CONST char * display_name));
/* 69 */
EXTERN int TkPointerEvent _ANSI_ARGS_((XEvent * eventPtr,
TkWindow * winPtr));
@@ -469,16 +470,7 @@ EXTERN void TkUnionRectWithRegion _ANSI_ARGS_((XRectangle* rect,
EXTERN void TkUnionRectWithRegion _ANSI_ARGS_((XRectangle* rect,
TkRegion src, TkRegion dr_return));
#endif /* MAC_OSX_TK */
-#ifdef MAC_TCL
-/* 120 */
-EXTERN void TkGenerateActivateEvents _ANSI_ARGS_((
- TkWindow * winPtr, int active));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 120 */
-EXTERN void TkGenerateActivateEvents _ANSI_ARGS_((
- TkWindow * winPtr, int active));
-#endif /* MAC_OSX_TCL */
+/* Slot 120 is reserved */
#ifdef MAC_TCL
/* 121 */
EXTERN Pixmap TkpCreateNativeBitmap _ANSI_ARGS_((Display * display,
@@ -497,14 +489,7 @@ EXTERN void TkpDefineNativeBitmaps _ANSI_ARGS_((void));
/* 122 */
EXTERN void TkpDefineNativeBitmaps _ANSI_ARGS_((void));
#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 123 */
-EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 123 */
-EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
-#endif /* MAC_OSX_TCL */
+/* Slot 123 is reserved */
#ifdef MAC_TCL
/* 124 */
EXTERN Pixmap TkpGetNativeAppBitmap _ANSI_ARGS_((Display * display,
@@ -515,80 +500,16 @@ EXTERN Pixmap TkpGetNativeAppBitmap _ANSI_ARGS_((Display * display,
EXTERN Pixmap TkpGetNativeAppBitmap _ANSI_ARGS_((Display * display,
CONST char * name, int * width, int * height));
#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 125 */
-EXTERN void TkPointerDeadWindow _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 125 */
-EXTERN void TkPointerDeadWindow _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 126 */
-EXTERN void TkpSetCapture _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 126 */
-EXTERN void TkpSetCapture _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 127 */
-EXTERN void TkpSetCursor _ANSI_ARGS_((TkpCursor cursor));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 127 */
-EXTERN void TkpSetCursor _ANSI_ARGS_((TkpCursor cursor));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 128 */
-EXTERN void TkpWmSetState _ANSI_ARGS_((TkWindow * winPtr,
- int state));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 128 */
-EXTERN void TkpWmSetState _ANSI_ARGS_((TkWindow * winPtr,
- int state));
-#endif /* MAC_OSX_TCL */
+/* Slot 125 is reserved */
+/* Slot 126 is reserved */
+/* Slot 127 is reserved */
+/* Slot 128 is reserved */
/* Slot 129 is reserved */
-#ifdef MAC_TCL
-/* 130 */
-EXTERN Window TkGetTransientMaster _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 130 */
-EXTERN Window TkGetTransientMaster _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 131 */
-EXTERN int TkGenerateButtonEvent _ANSI_ARGS_((int x, int y,
- Window window, unsigned int state));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 131 */
-EXTERN int TkGenerateButtonEvent _ANSI_ARGS_((int x, int y,
- Window window, unsigned int state));
-#endif /* MAC_OSX_TCL */
+/* Slot 130 is reserved */
+/* Slot 131 is reserved */
/* Slot 132 is reserved */
-#ifdef MAC_TCL
-/* 133 */
-EXTERN void TkGenWMDestroyEvent _ANSI_ARGS_((Tk_Window tkwin));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 133 */
-EXTERN void TkGenWMDestroyEvent _ANSI_ARGS_((Tk_Window tkwin));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 134 */
-EXTERN void TkGenWMConfigureEvent _ANSI_ARGS_((Tk_Window tkwin,
- int x, int y, int width, int height,
- int flags));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 134 */
-EXTERN void TkGenWMConfigureEvent _ANSI_ARGS_((Tk_Window tkwin,
- int x, int y, int width, int height,
- int flags));
-#endif /* MAC_OSX_TCL */
+/* Slot 133 is reserved */
+/* Slot 134 is reserved */
/* 135 */
EXTERN void TkpDrawHighlightBorder _ANSI_ARGS_((Tk_Window tkwin,
GC fgGC, GC bgGC, int highlightWidth,
@@ -607,6 +528,9 @@ EXTERN void TkpInitKeymapInfo _ANSI_ARGS_((TkDisplay * dispPtr));
/* 140 */
EXTERN TkRegion TkPhotoGetValidRegion _ANSI_ARGS_((
Tk_PhotoHandle handle));
+/* 141 */
+EXTERN TkWindow ** TkWmStackorderToplevel _ANSI_ARGS_((
+ TkWindow * parentPtr));
typedef struct TkIntStubs {
int magic;
@@ -645,7 +569,7 @@ typedef struct TkIntStubs {
char * (*tkGetBitmapData) _ANSI_ARGS_((Tcl_Interp * interp, char * string, char * fileName, int * widthPtr, int * heightPtr, int * hotXPtr, int * hotYPtr)); /* 30 */
void (*tkGetButtPoints) _ANSI_ARGS_((double p1[], double p2[], double width, int project, double m1[], double m2[])); /* 31 */
TkCursor * (*tkGetCursorByName) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, Tk_Uid string)); /* 32 */
- char * (*tkGetDefaultScreenName) _ANSI_ARGS_((Tcl_Interp * interp, char * screenName)); /* 33 */
+ CONST char * (*tkGetDefaultScreenName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * screenName)); /* 33 */
TkDisplay * (*tkGetDisplay) _ANSI_ARGS_((Display * display)); /* 34 */
int (*tkGetDisplayOf) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], Tk_Window * tkwinPtr)); /* 35 */
TkWindow * (*tkGetFocusWin) _ANSI_ARGS_((TkWindow * winPtr)); /* 36 */
@@ -670,7 +594,7 @@ typedef struct TkIntStubs {
int (*tkpChangeFocus) _ANSI_ARGS_((TkWindow * winPtr, int force)); /* 55 */
void (*tkpCloseDisplay) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 56 */
void (*tkpClaimFocus) _ANSI_ARGS_((TkWindow * topLevelPtr, int force)); /* 57 */
- void (*tkpDisplayWarning) _ANSI_ARGS_((char * msg, char * title)); /* 58 */
+ void (*tkpDisplayWarning) _ANSI_ARGS_((CONST char * msg, CONST char * title)); /* 58 */
void (*tkpGetAppName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * name)); /* 59 */
TkWindow * (*tkpGetOtherWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 60 */
TkWindow * (*tkpGetWrapperWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 61 */
@@ -680,7 +604,7 @@ typedef struct TkIntStubs {
void (*tkpMakeMenuWindow) _ANSI_ARGS_((Tk_Window tkwin, int transient)); /* 65 */
Window (*tkpMakeWindow) _ANSI_ARGS_((TkWindow * winPtr, Window parent)); /* 66 */
void (*tkpMenuNotifyToplevelCreate) _ANSI_ARGS_((Tcl_Interp * interp1, char * menuName)); /* 67 */
- TkDisplay * (*tkpOpenDisplay) _ANSI_ARGS_((char * display_name)); /* 68 */
+ TkDisplay * (*tkpOpenDisplay) _ANSI_ARGS_((CONST char * display_name)); /* 68 */
int (*tkPointerEvent) _ANSI_ARGS_((XEvent * eventPtr, TkWindow * winPtr)); /* 69 */
int (*tkPolygonToArea) _ANSI_ARGS_((double * polyPtr, int numPoints, double * rectPtr)); /* 70 */
double (*tkPolygonToPoint) _ANSI_ARGS_((double * polyPtr, int numPoints, double * pointPtr)); /* 71 */
@@ -809,18 +733,7 @@ typedef struct TkIntStubs {
#ifdef MAC_OSX_TK
void (*tkUnionRectWithRegion) _ANSI_ARGS_((XRectangle* rect, TkRegion src, TkRegion dr_return)); /* 119 */
#endif /* MAC_OSX_TK */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved120;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved120;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 120 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 120 */
-#endif /* MAC_OSX_TCL */
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
void *reserved121;
#endif /* UNIX */
@@ -845,18 +758,7 @@ typedef struct TkIntStubs {
#ifdef MAC_OSX_TCL
void (*tkpDefineNativeBitmaps) _ANSI_ARGS_((void)); /* 122 */
#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved123;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved123;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 123 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 123 */
-#endif /* MAC_OSX_TCL */
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
void *reserved124;
#endif /* UNIX */
@@ -869,110 +771,23 @@ typedef struct TkIntStubs {
#ifdef MAC_OSX_TCL
Pixmap (*tkpGetNativeAppBitmap) _ANSI_ARGS_((Display * display, CONST char * name, int * width, int * height)); /* 124 */
#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved125;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved125;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkPointerDeadWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 125 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkPointerDeadWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 125 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved126;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved126;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkpSetCapture) _ANSI_ARGS_((TkWindow * winPtr)); /* 126 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkpSetCapture) _ANSI_ARGS_((TkWindow * winPtr)); /* 126 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved127;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved127;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkpSetCursor) _ANSI_ARGS_((TkpCursor cursor)); /* 127 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkpSetCursor) _ANSI_ARGS_((TkpCursor cursor)); /* 127 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved128;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved128;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkpWmSetState) _ANSI_ARGS_((TkWindow * winPtr, int state)); /* 128 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkpWmSetState) _ANSI_ARGS_((TkWindow * winPtr, int state)); /* 128 */
-#endif /* MAC_OSX_TCL */
void *reserved129;
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
void *reserved130;
-#endif /* UNIX */
-#ifdef __WIN32__
- void *reserved130;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- Window (*tkGetTransientMaster) _ANSI_ARGS_((TkWindow * winPtr)); /* 130 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- Window (*tkGetTransientMaster) _ANSI_ARGS_((TkWindow * winPtr)); /* 130 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved131;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved131;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- int (*tkGenerateButtonEvent) _ANSI_ARGS_((int x, int y, Window window, unsigned int state)); /* 131 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- int (*tkGenerateButtonEvent) _ANSI_ARGS_((int x, int y, Window window, unsigned int state)); /* 131 */
-#endif /* MAC_OSX_TCL */
void *reserved132;
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved133;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved133;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkGenWMDestroyEvent) _ANSI_ARGS_((Tk_Window tkwin)); /* 133 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkGenWMDestroyEvent) _ANSI_ARGS_((Tk_Window tkwin)); /* 133 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved134;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved134;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkGenWMConfigureEvent) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int width, int height, int flags)); /* 134 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkGenWMConfigureEvent) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int width, int height, int flags)); /* 134 */
-#endif /* MAC_OSX_TCL */
void (*tkpDrawHighlightBorder) _ANSI_ARGS_((Tk_Window tkwin, GC fgGC, GC bgGC, int highlightWidth, Drawable drawable)); /* 135 */
void (*tkSetFocusWin) _ANSI_ARGS_((TkWindow * winPtr, int force)); /* 136 */
void (*tkpSetKeycodeAndState) _ANSI_ARGS_((Tk_Window tkwin, KeySym keySym, XEvent * eventPtr)); /* 137 */
KeySym (*tkpGetKeySym) _ANSI_ARGS_((TkDisplay * dispPtr, XEvent * eventPtr)); /* 138 */
void (*tkpInitKeymapInfo) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 139 */
TkRegion (*tkPhotoGetValidRegion) _ANSI_ARGS_((Tk_PhotoHandle handle)); /* 140 */
+ TkWindow ** (*tkWmStackorderToplevel) _ANSI_ARGS_((TkWindow * parentPtr)); /* 141 */
} TkIntStubs;
#ifdef __cplusplus
@@ -1564,18 +1379,7 @@ extern TkIntStubs *tkIntStubsPtr;
(tkIntStubsPtr->tkUnionRectWithRegion) /* 119 */
#endif
#endif /* MAC_OSX_TK */
-#ifdef MAC_TCL
-#ifndef TkGenerateActivateEvents
-#define TkGenerateActivateEvents \
- (tkIntStubsPtr->tkGenerateActivateEvents) /* 120 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGenerateActivateEvents
-#define TkGenerateActivateEvents \
- (tkIntStubsPtr->tkGenerateActivateEvents) /* 120 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 120 is reserved */
#ifdef MAC_TCL
#ifndef TkpCreateNativeBitmap
#define TkpCreateNativeBitmap \
@@ -1600,18 +1404,7 @@ extern TkIntStubs *tkIntStubsPtr;
(tkIntStubsPtr->tkpDefineNativeBitmaps) /* 122 */
#endif
#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkpGetMS
-#define TkpGetMS \
- (tkIntStubsPtr->tkpGetMS) /* 123 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkpGetMS
-#define TkpGetMS \
- (tkIntStubsPtr->tkpGetMS) /* 123 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 123 is reserved */
#ifdef MAC_TCL
#ifndef TkpGetNativeAppBitmap
#define TkpGetNativeAppBitmap \
@@ -1624,104 +1417,16 @@ extern TkIntStubs *tkIntStubsPtr;
(tkIntStubsPtr->tkpGetNativeAppBitmap) /* 124 */
#endif
#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkPointerDeadWindow
-#define TkPointerDeadWindow \
- (tkIntStubsPtr->tkPointerDeadWindow) /* 125 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkPointerDeadWindow
-#define TkPointerDeadWindow \
- (tkIntStubsPtr->tkPointerDeadWindow) /* 125 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkpSetCapture
-#define TkpSetCapture \
- (tkIntStubsPtr->tkpSetCapture) /* 126 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkpSetCapture
-#define TkpSetCapture \
- (tkIntStubsPtr->tkpSetCapture) /* 126 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkpSetCursor
-#define TkpSetCursor \
- (tkIntStubsPtr->tkpSetCursor) /* 127 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkpSetCursor
-#define TkpSetCursor \
- (tkIntStubsPtr->tkpSetCursor) /* 127 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkpWmSetState
-#define TkpWmSetState \
- (tkIntStubsPtr->tkpWmSetState) /* 128 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkpWmSetState
-#define TkpWmSetState \
- (tkIntStubsPtr->tkpWmSetState) /* 128 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 125 is reserved */
+/* Slot 126 is reserved */
+/* Slot 127 is reserved */
+/* Slot 128 is reserved */
/* Slot 129 is reserved */
-#ifdef MAC_TCL
-#ifndef TkGetTransientMaster
-#define TkGetTransientMaster \
- (tkIntStubsPtr->tkGetTransientMaster) /* 130 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGetTransientMaster
-#define TkGetTransientMaster \
- (tkIntStubsPtr->tkGetTransientMaster) /* 130 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkGenerateButtonEvent
-#define TkGenerateButtonEvent \
- (tkIntStubsPtr->tkGenerateButtonEvent) /* 131 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGenerateButtonEvent
-#define TkGenerateButtonEvent \
- (tkIntStubsPtr->tkGenerateButtonEvent) /* 131 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 130 is reserved */
+/* Slot 131 is reserved */
/* Slot 132 is reserved */
-#ifdef MAC_TCL
-#ifndef TkGenWMDestroyEvent
-#define TkGenWMDestroyEvent \
- (tkIntStubsPtr->tkGenWMDestroyEvent) /* 133 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGenWMDestroyEvent
-#define TkGenWMDestroyEvent \
- (tkIntStubsPtr->tkGenWMDestroyEvent) /* 133 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkGenWMConfigureEvent
-#define TkGenWMConfigureEvent \
- (tkIntStubsPtr->tkGenWMConfigureEvent) /* 134 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGenWMConfigureEvent
-#define TkGenWMConfigureEvent \
- (tkIntStubsPtr->tkGenWMConfigureEvent) /* 134 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 133 is reserved */
+/* Slot 134 is reserved */
#ifndef TkpDrawHighlightBorder
#define TkpDrawHighlightBorder \
(tkIntStubsPtr->tkpDrawHighlightBorder) /* 135 */
@@ -1746,6 +1451,10 @@ extern TkIntStubs *tkIntStubsPtr;
#define TkPhotoGetValidRegion \
(tkIntStubsPtr->tkPhotoGetValidRegion) /* 140 */
#endif
+#ifndef TkWmStackorderToplevel
+#define TkWmStackorderToplevel \
+ (tkIntStubsPtr->tkWmStackorderToplevel) /* 141 */
+#endif
#endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */
diff --git a/generic/tkIntPlatDecls.h b/generic/tkIntPlatDecls.h
index 204b1f3..baa4c6a 100644
--- a/generic/tkIntPlatDecls.h
+++ b/generic/tkIntPlatDecls.h
@@ -9,7 +9,7 @@
* Copyright (c) 1998-1999 by Scriptics Corporation.
* All rights reserved.
*
- * RCS: @(#) $Id: tkIntPlatDecls.h,v 1.9.2.2 2001/10/17 07:02:07 wolfsuit Exp $
+ * RCS: @(#) $Id: tkIntPlatDecls.h,v 1.9.2.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#ifndef _TKINTPLATDECLS
@@ -150,11 +150,8 @@ EXTERN int TkWinGetPlatformId _ANSI_ARGS_((void));
/* 0 */
EXTERN void TkGenerateActivateEvents _ANSI_ARGS_((
TkWindow * winPtr, int active));
-/* 1 */
-EXTERN Pixmap TkpCreateNativeBitmap _ANSI_ARGS_((Display * display,
- char * source));
-/* 2 */
-EXTERN void TkpDefineNativeBitmaps _ANSI_ARGS_((void));
+/* Slot 1 is reserved */
+/* Slot 2 is reserved */
/* 3 */
EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
/* Slot 4 is reserved */
@@ -180,37 +177,28 @@ EXTERN int TkGenerateButtonEvent _ANSI_ARGS_((int x, int y,
/* Slot 15 is reserved */
/* 16 */
EXTERN void TkGenWMDestroyEvent _ANSI_ARGS_((Tk_Window tkwin));
-/* 17 */
-EXTERN void TkGenWMConfigureEvent _ANSI_ARGS_((Tk_Window tkwin,
- int x, int y, int width, int height,
- int flags));
+/* Slot 17 is reserved */
/* 18 */
EXTERN unsigned int TkMacButtonKeyState _ANSI_ARGS_((void));
/* 19 */
EXTERN void TkMacClearMenubarActive _ANSI_ARGS_((void));
-/* 20 */
-EXTERN int TkMacConvertEvent _ANSI_ARGS_((
- EventRecord * eventPtr));
+/* Slot 20 is reserved */
/* 21 */
EXTERN int TkMacDispatchMenuEvent _ANSI_ARGS_((int menuID,
int index));
/* 22 */
EXTERN void TkMacInstallCursor _ANSI_ARGS_((int resizeOverride));
-/* 23 */
-EXTERN int TkMacConvertTkEvent _ANSI_ARGS_((
- EventRecord * eventPtr, Window window));
+/* Slot 23 is reserved */
/* 24 */
EXTERN void TkMacHandleTearoffMenu _ANSI_ARGS_((void));
/* Slot 25 is reserved */
-/* 26 */
-EXTERN void TkMacInvalClipRgns _ANSI_ARGS_((TkWindow * winPtr));
+/* Slot 26 is reserved */
/* 27 */
EXTERN void TkMacDoHLEvent _ANSI_ARGS_((EventRecord * theEvent));
/* Slot 28 is reserved */
/* 29 */
EXTERN Time TkMacGenerateTime _ANSI_ARGS_((void));
-/* 30 */
-EXTERN GWorldPtr TkMacGetDrawablePort _ANSI_ARGS_((Drawable drawable));
+/* Slot 30 is reserved */
/* 31 */
EXTERN TkWindow * TkMacGetScrollbarGrowWindow _ANSI_ARGS_((
TkWindow * winPtr));
@@ -222,13 +210,9 @@ EXTERN int TkMacGrowToplevel _ANSI_ARGS_((WindowRef whichWindow,
/* 34 */
EXTERN void TkMacHandleMenuSelect _ANSI_ARGS_((long mResult,
int optionKeyPressed));
-/* 35 */
-EXTERN int TkMacHaveAppearance _ANSI_ARGS_((void));
-/* 36 */
-EXTERN void TkMacInitAppleEvents _ANSI_ARGS_((
- Tcl_Interp * interp));
-/* 37 */
-EXTERN void TkMacInitMenus _ANSI_ARGS_((Tcl_Interp * interp));
+/* Slot 35 is reserved */
+/* Slot 36 is reserved */
+/* Slot 37 is reserved */
/* 38 */
EXTERN void TkMacInvalidateWindow _ANSI_ARGS_((
MacDrawable * macWin, int flag));
@@ -295,6 +279,8 @@ EXTERN MacDrawable * TkMacContainerId _ANSI_ARGS_((TkWindow * winPtr));
EXTERN MacDrawable * TkMacGetHostToplevel _ANSI_ARGS_((TkWindow * winPtr));
/* 65 */
EXTERN void TkMacPreprocessMenu _ANSI_ARGS_((void));
+/* 66 */
+EXTERN int TkpIsWindowFloating _ANSI_ARGS_((WindowRef window));
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK
/* 0 */
@@ -421,6 +407,20 @@ EXTERN void TkMacOSXPreprocessMenu _ANSI_ARGS_((void));
EXTERN int TkpIsWindowFloating _ANSI_ARGS_((WindowRef window));
/* 47 */
EXTERN Tk_Window TkMacOSXGetCapture _ANSI_ARGS_((void));
+/* Slot 48 is reserved */
+/* 49 */
+EXTERN Window TkGetTransientMaster _ANSI_ARGS_((TkWindow * winPtr));
+/* 50 */
+EXTERN int TkGenerateButtonEvent _ANSI_ARGS_((int x, int y,
+ Window window, unsigned int state));
+/* 51 */
+EXTERN void TkGenWMDestroyEvent _ANSI_ARGS_((Tk_Window tkwin));
+/* 52 */
+EXTERN void TkGenWMConfigureEvent _ANSI_ARGS_((Tk_Window tkwin,
+ int x, int y, int width, int height,
+ int flags));
+/* 53 */
+EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
#endif /* MAC_OSX_TK */
typedef struct TkIntPlatStubs {
@@ -476,8 +476,8 @@ typedef struct TkIntPlatStubs {
#endif /* __WIN32__ */
#ifdef MAC_TCL
void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 0 */
- Pixmap (*tkpCreateNativeBitmap) _ANSI_ARGS_((Display * display, char * source)); /* 1 */
- void (*tkpDefineNativeBitmaps) _ANSI_ARGS_((void)); /* 2 */
+ void *reserved1;
+ void *reserved2;
unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 3 */
void *reserved4;
void (*tkPointerDeadWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 5 */
@@ -492,27 +492,27 @@ typedef struct TkIntPlatStubs {
int (*tkGenerateButtonEvent) _ANSI_ARGS_((int x, int y, Window window, unsigned int state)); /* 14 */
void *reserved15;
void (*tkGenWMDestroyEvent) _ANSI_ARGS_((Tk_Window tkwin)); /* 16 */
- void (*tkGenWMConfigureEvent) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int width, int height, int flags)); /* 17 */
+ void *reserved17;
unsigned int (*tkMacButtonKeyState) _ANSI_ARGS_((void)); /* 18 */
void (*tkMacClearMenubarActive) _ANSI_ARGS_((void)); /* 19 */
- int (*tkMacConvertEvent) _ANSI_ARGS_((EventRecord * eventPtr)); /* 20 */
+ void *reserved20;
int (*tkMacDispatchMenuEvent) _ANSI_ARGS_((int menuID, int index)); /* 21 */
void (*tkMacInstallCursor) _ANSI_ARGS_((int resizeOverride)); /* 22 */
- int (*tkMacConvertTkEvent) _ANSI_ARGS_((EventRecord * eventPtr, Window window)); /* 23 */
+ void *reserved23;
void (*tkMacHandleTearoffMenu) _ANSI_ARGS_((void)); /* 24 */
void *reserved25;
- void (*tkMacInvalClipRgns) _ANSI_ARGS_((TkWindow * winPtr)); /* 26 */
+ void *reserved26;
void (*tkMacDoHLEvent) _ANSI_ARGS_((EventRecord * theEvent)); /* 27 */
void *reserved28;
Time (*tkMacGenerateTime) _ANSI_ARGS_((void)); /* 29 */
- GWorldPtr (*tkMacGetDrawablePort) _ANSI_ARGS_((Drawable drawable)); /* 30 */
+ void *reserved30;
TkWindow * (*tkMacGetScrollbarGrowWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 31 */
Window (*tkMacGetXWindow) _ANSI_ARGS_((WindowRef macWinPtr)); /* 32 */
int (*tkMacGrowToplevel) _ANSI_ARGS_((WindowRef whichWindow, Point start)); /* 33 */
void (*tkMacHandleMenuSelect) _ANSI_ARGS_((long mResult, int optionKeyPressed)); /* 34 */
- int (*tkMacHaveAppearance) _ANSI_ARGS_((void)); /* 35 */
- void (*tkMacInitAppleEvents) _ANSI_ARGS_((Tcl_Interp * interp)); /* 36 */
- void (*tkMacInitMenus) _ANSI_ARGS_((Tcl_Interp * interp)); /* 37 */
+ void *reserved35;
+ void *reserved36;
+ void *reserved37;
void (*tkMacInvalidateWindow) _ANSI_ARGS_((MacDrawable * macWin, int flag)); /* 38 */
int (*tkMacIsCharacterMissing) _ANSI_ARGS_((Tk_Font tkfont, unsigned int searchChar)); /* 39 */
void (*tkMacMakeRealWindowExist) _ANSI_ARGS_((TkWindow * winPtr)); /* 40 */
@@ -541,6 +541,7 @@ typedef struct TkIntPlatStubs {
MacDrawable * (*tkMacContainerId) _ANSI_ARGS_((TkWindow * winPtr)); /* 63 */
MacDrawable * (*tkMacGetHostToplevel) _ANSI_ARGS_((TkWindow * winPtr)); /* 64 */
void (*tkMacPreprocessMenu) _ANSI_ARGS_((void)); /* 65 */
+ int (*tkpIsWindowFloating) _ANSI_ARGS_((WindowRef window)); /* 66 */
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK
void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 0 */
@@ -591,6 +592,12 @@ typedef struct TkIntPlatStubs {
void (*tkMacOSXPreprocessMenu) _ANSI_ARGS_((void)); /* 45 */
int (*tkpIsWindowFloating) _ANSI_ARGS_((WindowRef window)); /* 46 */
Tk_Window (*tkMacOSXGetCapture) _ANSI_ARGS_((void)); /* 47 */
+ void *reserved48;
+ Window (*tkGetTransientMaster) _ANSI_ARGS_((TkWindow * winPtr)); /* 49 */
+ int (*tkGenerateButtonEvent) _ANSI_ARGS_((int x, int y, Window window, unsigned int state)); /* 50 */
+ void (*tkGenWMDestroyEvent) _ANSI_ARGS_((Tk_Window tkwin)); /* 51 */
+ void (*tkGenWMConfigureEvent) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int width, int height, int flags)); /* 52 */
+ unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 53 */
#endif /* MAC_OSX_TK */
} TkIntPlatStubs;
@@ -786,14 +793,8 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkGenerateActivateEvents \
(tkIntPlatStubsPtr->tkGenerateActivateEvents) /* 0 */
#endif
-#ifndef TkpCreateNativeBitmap
-#define TkpCreateNativeBitmap \
- (tkIntPlatStubsPtr->tkpCreateNativeBitmap) /* 1 */
-#endif
-#ifndef TkpDefineNativeBitmaps
-#define TkpDefineNativeBitmaps \
- (tkIntPlatStubsPtr->tkpDefineNativeBitmaps) /* 2 */
-#endif
+/* Slot 1 is reserved */
+/* Slot 2 is reserved */
#ifndef TkpGetMS
#define TkpGetMS \
(tkIntPlatStubsPtr->tkpGetMS) /* 3 */
@@ -835,10 +836,7 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkGenWMDestroyEvent \
(tkIntPlatStubsPtr->tkGenWMDestroyEvent) /* 16 */
#endif
-#ifndef TkGenWMConfigureEvent
-#define TkGenWMConfigureEvent \
- (tkIntPlatStubsPtr->tkGenWMConfigureEvent) /* 17 */
-#endif
+/* Slot 17 is reserved */
#ifndef TkMacButtonKeyState
#define TkMacButtonKeyState \
(tkIntPlatStubsPtr->tkMacButtonKeyState) /* 18 */
@@ -847,10 +845,7 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacClearMenubarActive \
(tkIntPlatStubsPtr->tkMacClearMenubarActive) /* 19 */
#endif
-#ifndef TkMacConvertEvent
-#define TkMacConvertEvent \
- (tkIntPlatStubsPtr->tkMacConvertEvent) /* 20 */
-#endif
+/* Slot 20 is reserved */
#ifndef TkMacDispatchMenuEvent
#define TkMacDispatchMenuEvent \
(tkIntPlatStubsPtr->tkMacDispatchMenuEvent) /* 21 */
@@ -859,19 +854,13 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacInstallCursor \
(tkIntPlatStubsPtr->tkMacInstallCursor) /* 22 */
#endif
-#ifndef TkMacConvertTkEvent
-#define TkMacConvertTkEvent \
- (tkIntPlatStubsPtr->tkMacConvertTkEvent) /* 23 */
-#endif
+/* Slot 23 is reserved */
#ifndef TkMacHandleTearoffMenu
#define TkMacHandleTearoffMenu \
(tkIntPlatStubsPtr->tkMacHandleTearoffMenu) /* 24 */
#endif
/* Slot 25 is reserved */
-#ifndef TkMacInvalClipRgns
-#define TkMacInvalClipRgns \
- (tkIntPlatStubsPtr->tkMacInvalClipRgns) /* 26 */
-#endif
+/* Slot 26 is reserved */
#ifndef TkMacDoHLEvent
#define TkMacDoHLEvent \
(tkIntPlatStubsPtr->tkMacDoHLEvent) /* 27 */
@@ -881,10 +870,7 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacGenerateTime \
(tkIntPlatStubsPtr->tkMacGenerateTime) /* 29 */
#endif
-#ifndef TkMacGetDrawablePort
-#define TkMacGetDrawablePort \
- (tkIntPlatStubsPtr->tkMacGetDrawablePort) /* 30 */
-#endif
+/* Slot 30 is reserved */
#ifndef TkMacGetScrollbarGrowWindow
#define TkMacGetScrollbarGrowWindow \
(tkIntPlatStubsPtr->tkMacGetScrollbarGrowWindow) /* 31 */
@@ -901,18 +887,9 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacHandleMenuSelect \
(tkIntPlatStubsPtr->tkMacHandleMenuSelect) /* 34 */
#endif
-#ifndef TkMacHaveAppearance
-#define TkMacHaveAppearance \
- (tkIntPlatStubsPtr->tkMacHaveAppearance) /* 35 */
-#endif
-#ifndef TkMacInitAppleEvents
-#define TkMacInitAppleEvents \
- (tkIntPlatStubsPtr->tkMacInitAppleEvents) /* 36 */
-#endif
-#ifndef TkMacInitMenus
-#define TkMacInitMenus \
- (tkIntPlatStubsPtr->tkMacInitMenus) /* 37 */
-#endif
+/* Slot 35 is reserved */
+/* Slot 36 is reserved */
+/* Slot 37 is reserved */
#ifndef TkMacInvalidateWindow
#define TkMacInvalidateWindow \
(tkIntPlatStubsPtr->tkMacInvalidateWindow) /* 38 */
@@ -1016,6 +993,10 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacPreprocessMenu \
(tkIntPlatStubsPtr->tkMacPreprocessMenu) /* 65 */
#endif
+#ifndef TkpIsWindowFloating
+#define TkpIsWindowFloating \
+ (tkIntPlatStubsPtr->tkpIsWindowFloating) /* 66 */
+#endif
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK
#ifndef TkGenerateActivateEvents
@@ -1210,6 +1191,27 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacOSXGetCapture \
(tkIntPlatStubsPtr->tkMacOSXGetCapture) /* 47 */
#endif
+/* Slot 48 is reserved */
+#ifndef TkGetTransientMaster
+#define TkGetTransientMaster \
+ (tkIntPlatStubsPtr->tkGetTransientMaster) /* 49 */
+#endif
+#ifndef TkGenerateButtonEvent
+#define TkGenerateButtonEvent \
+ (tkIntPlatStubsPtr->tkGenerateButtonEvent) /* 50 */
+#endif
+#ifndef TkGenWMDestroyEvent
+#define TkGenWMDestroyEvent \
+ (tkIntPlatStubsPtr->tkGenWMDestroyEvent) /* 51 */
+#endif
+#ifndef TkGenWMConfigureEvent
+#define TkGenWMConfigureEvent \
+ (tkIntPlatStubsPtr->tkGenWMConfigureEvent) /* 52 */
+#endif
+#ifndef TkpGetMS
+#define TkpGetMS \
+ (tkIntPlatStubsPtr->tkpGetMS) /* 53 */
+#endif
#endif /* MAC_OSX_TK */
#endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */
diff --git a/generic/tkIntXlibDecls.h b/generic/tkIntXlibDecls.h
index 804014e..d9d9f2b 100644
--- a/generic/tkIntXlibDecls.h
+++ b/generic/tkIntXlibDecls.h
@@ -9,7 +9,7 @@
* Copyright (c) 1998-1999 by Scriptics Corporation.
* All rights reserved.
*
- * RCS: @(#) $Id: tkIntXlibDecls.h,v 1.13.8.2 2001/10/17 07:02:07 wolfsuit Exp $
+ * RCS: @(#) $Id: tkIntXlibDecls.h,v 1.13.8.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#ifndef _TKINTXLIBDECLS
@@ -231,7 +231,7 @@ EXTERN Status XSendEvent _ANSI_ARGS_((Display* d, Window w, Bool b,
long l, XEvent* x));
/* 62 */
EXTERN void XSetCommand _ANSI_ARGS_((Display* d, Window w,
- char** c, int i));
+ CONST char** c, int i));
/* 63 */
EXTERN void XSetIconName _ANSI_ARGS_((Display* d, Window w,
_Xconst char* c));
@@ -1006,7 +1006,7 @@ typedef struct TkIntXlibStubs {
void (*xResizeWindow) _ANSI_ARGS_((Display* d, Window w, unsigned int ui1, unsigned int ui2)); /* 59 */
void (*xSelectInput) _ANSI_ARGS_((Display* d, Window w, long l)); /* 60 */
Status (*xSendEvent) _ANSI_ARGS_((Display* d, Window w, Bool b, long l, XEvent* x)); /* 61 */
- void (*xSetCommand) _ANSI_ARGS_((Display* d, Window w, char** c, int i)); /* 62 */
+ void (*xSetCommand) _ANSI_ARGS_((Display* d, Window w, CONST char** c, int i)); /* 62 */
void (*xSetIconName) _ANSI_ARGS_((Display* d, Window w, _Xconst char* c)); /* 63 */
void (*xSetInputFocus) _ANSI_ARGS_((Display* d, Window w, int i, Time t)); /* 64 */
void (*xSetSelectionOwner) _ANSI_ARGS_((Display* d, Atom a, Window w, Time t)); /* 65 */
diff --git a/generic/tkListbox.c b/generic/tkListbox.c
index a939479..82eb5c4 100644
--- a/generic/tkListbox.c
+++ b/generic/tkListbox.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkListbox.c,v 1.22 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkListbox.c,v 1.22.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -321,7 +321,7 @@ static Tk_OptionSpec itemAttrOptionSpecs[] = {
* commands) and map the indexes into the string tables into
* enumerated types used to dispatch the listbox widget command.
*/
-static char *commandNames[] = {
+static CONST char *commandNames[] = {
"activate", "bbox", "cget", "configure", "curselection", "delete", "get",
"index", "insert", "itemcget", "itemconfigure", "nearest", "scan",
"see", "selection", "size", "xview", "yview",
@@ -336,7 +336,7 @@ enum command {
COMMAND_SIZE, COMMAND_XVIEW, COMMAND_YVIEW
};
-static char *selCommandNames[] = {
+static CONST char *selCommandNames[] = {
"anchor", "clear", "includes", "set", (char *) NULL
};
@@ -344,7 +344,7 @@ enum selcommand {
SELECTION_ANCHOR, SELECTION_CLEAR, SELECTION_INCLUDES, SELECTION_SET
};
-static char *scanCommandNames[] = {
+static CONST char *scanCommandNames[] = {
"mark", "dragto", (char *) NULL
};
@@ -352,7 +352,7 @@ enum scancommand {
SCAN_MARK, SCAN_DRAGTO
};
-static char *indexNames[] = {
+static CONST char *indexNames[] = {
"active", "anchor", "end", (char *)NULL
};
@@ -2673,8 +2673,12 @@ ChangeListboxOffset(listPtr, offset)
/*
* Make sure that the new offset is within the allowable range, and
* round it off to an even multiple of xScrollUnit.
+ *
+ * Add half a scroll unit to do entry/text-like synchronization.
+ * [Bug #225025]
*/
+ offset += listPtr->xScrollUnit / 2;
maxOffset = listPtr->maxWidth - (Tk_Width(listPtr->tkwin) -
2*listPtr->inset - 2*listPtr->selBorderWidth)
+ listPtr->xScrollUnit - 1;
diff --git a/generic/tkMain.c b/generic/tkMain.c
index 5f581b8..0dec459 100644
--- a/generic/tkMain.c
+++ b/generic/tkMain.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMain.c,v 1.9.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMain.c,v 1.9.2.2 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include <ctype.h>
@@ -55,11 +55,13 @@ static Tcl_ThreadDataKey dataKey;
*/
#if !defined(__WIN32__) && !defined(_WIN32)
+#if !defined(MAC_TCL)
extern int isatty _ANSI_ARGS_((int fd));
+#else
+#include <unistd.h>
+#endif
extern char * strrchr _ANSI_ARGS_((CONST char *string, int c));
#endif
-extern void TkpDisplayWarning _ANSI_ARGS_((char *msg,
- char *title));
/*
* Forward declarations for procedures defined later in this file.
@@ -97,7 +99,8 @@ Tk_MainEx(argc, argv, appInitProc, interp)
* to execute commands. */
Tcl_Interp *interp;
{
- char *args, *fileName;
+ char *args;
+ CONST char *fileName;
char buf[TCL_INTEGER_SPACE];
int code;
size_t length;
@@ -160,7 +163,7 @@ Tk_MainEx(argc, argv, appInitProc, interp)
* and "argv".
*/
- args = Tcl_Merge(argc-1, argv+1);
+ args = Tcl_Merge(argc-1, (CONST char **)argv+1);
Tcl_ExternalToUtfDString(NULL, args, -1, &argString);
Tcl_SetVar(interp, "argv", Tcl_DStringValue(&argString), TCL_GLOBAL_ONLY);
Tcl_DStringFree(&argString);
@@ -404,12 +407,12 @@ Prompt(interp, partial)
* exists a partial command, so use
* the secondary prompt. */
{
- char *promptCmd;
+ Tcl_Obj *promptCmd;
int code;
Tcl_Channel outChannel, errChannel;
- promptCmd = Tcl_GetVar(interp,
- partial ? "tcl_prompt2" : "tcl_prompt1", TCL_GLOBAL_ONLY);
+ promptCmd = Tcl_GetVar2Ex(interp,
+ partial ? "tcl_prompt2" : "tcl_prompt1", NULL, TCL_GLOBAL_ONLY);
if (promptCmd == NULL) {
defaultPrompt:
if (!partial) {
@@ -426,7 +429,7 @@ defaultPrompt:
}
}
} else {
- code = Tcl_Eval(interp, promptCmd);
+ code = Tcl_EvalObjEx(interp, promptCmd, TCL_EVAL_GLOBAL);
if (code != TCL_OK) {
Tcl_AddErrorInfo(interp,
"\n (script that generates prompt)");
diff --git a/generic/tkMenu.c b/generic/tkMenu.c
index ff50130..ae6f760 100644
--- a/generic/tkMenu.c
+++ b/generic/tkMenu.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMenu.c,v 1.13 2001/10/12 13:30:31 tmh Exp $
+ * RCS: @(#) $Id: tkMenu.c,v 1.13.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
/*
@@ -105,8 +105,10 @@ TCL_DECLARE_MUTEX(menuMutex)
char *tkMenuStateStrings[] = {"active", "normal", "disabled", (char *) NULL};
-static char *menuEntryTypeStrings[] = {"cascade", "checkbutton", "command",
- "radiobutton", "separator", (char *) NULL};
+static CONST char *menuEntryTypeStrings[] = {
+ "cascade", "checkbutton", "command", "radiobutton", "separator",
+ (char *) NULL
+};
/*
* The following table defines the legal values for the -compound option.
@@ -243,7 +245,7 @@ static Tk_OptionSpec *specsArray[] = {
* Menu type strings for use with Tcl_GetIndexFromObj.
*/
-static char *menuTypeStrings[] = {"normal", "tearoff", "menubar",
+static CONST char *menuTypeStrings[] = {"normal", "tearoff", "menubar",
(char *) NULL};
Tk_OptionSpec tkMenuConfigSpecs[] = {
@@ -311,7 +313,7 @@ Tk_OptionSpec tkMenuConfigSpecs[] = {
* along with MenuWidgetObjCmd.
*/
-static char *menuOptions[] = {
+static CONST char *menuOptions[] = {
"activate", "add", "cget", "clone", "configure", "delete", "entrycget",
"entryconfigure", "index", "insert", "invoke", "post", "postcascade",
"type", "unpost", "yposition", (char *) NULL
@@ -463,7 +465,7 @@ MenuCmd(clientData, interp, objc, objv)
int i, index;
int toplevel;
char *windowName;
- static char *typeStringList[] = {"-type", (char *) NULL};
+ static CONST char *typeStringList[] = {"-type", (char *) NULL};
TkMenuOptionTables *optionTablesPtr = (TkMenuOptionTables *) clientData;
if (objc < 2) {
@@ -1012,9 +1014,9 @@ MenuWidgetObjCmd(clientData, interp, objc, objv)
if (menuPtr->entries[index]->type == TEAROFF_ENTRY) {
Tcl_SetResult(interp, "tearoff", TCL_STATIC);
} else {
- Tcl_SetResult(interp,
+ Tcl_SetStringObj(Tcl_GetObjResult(interp),
menuEntryTypeStrings[menuPtr->entries[index]->type],
- TCL_STATIC);
+ -1);
}
break;
}
@@ -1996,7 +1998,7 @@ ConfigureMenuCloneEntries(interp, menuPtr, index, objc, objv)
oldCascadeName = Tcl_GetStringFromObj(oldCascadePtr,
NULL);
cascadeEntryChanged = (strcmp(oldCascadeName, newCascadeName)
- == 0);
+ != 0);
}
if (oldCascadePtr != NULL) {
Tcl_DecrRefCount(oldCascadePtr);
@@ -2467,7 +2469,7 @@ MenuVarProc(clientData, interp, name1, name2, flags)
{
TkMenuEntry *mePtr = (TkMenuEntry *) clientData;
TkMenu *menuPtr;
- char *value;
+ CONST char *value;
char *name = Tcl_GetStringFromObj(mePtr->namePtr, NULL);
char *onValue;
diff --git a/generic/tkMenubutton.c b/generic/tkMenubutton.c
index 28d82a9..18decbc 100644
--- a/generic/tkMenubutton.c
+++ b/generic/tkMenubutton.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMenubutton.c,v 1.8 2001/10/12 13:30:31 tmh Exp $
+ * RCS: @(#) $Id: tkMenubutton.c,v 1.8.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkMenubutton.h"
@@ -155,7 +155,7 @@ static Tk_OptionSpec optionSpecs[] = {
* to dispatch the scale widget command.
*/
-static char *commandNames[] = {
+static CONST char *commandNames[] = {
"cget", "configure", (char *) NULL
};
@@ -627,7 +627,7 @@ ConfigureMenuButton(interp, mbPtr, objc, objv)
* current value.
*/
- char *value;
+ CONST char *value;
value = Tcl_GetVar(interp, mbPtr->textVarName, TCL_GLOBAL_ONLY);
if (value == NULL) {
@@ -872,7 +872,7 @@ MenuButtonTextVarProc(clientData, interp, name1, name2, flags)
int flags; /* Information about what happened. */
{
register TkMenuButton *mbPtr = (TkMenuButton *) clientData;
- char *value;
+ CONST char *value;
/*
* If the variable is unset, then immediately recreate it unless
diff --git a/generic/tkMessage.c b/generic/tkMessage.c
index 1e82ba5..17db4bb 100644
--- a/generic/tkMessage.c
+++ b/generic/tkMessage.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMessage.c,v 1.10 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkMessage.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -313,7 +313,7 @@ MessageWidgetObjCmd(clientData, interp, objc, objv)
Tcl_Obj *CONST objv[]; /* Argument strings. */
{
register Message *msgPtr = (Message *) clientData;
- static char *optionStrings[] = { "cget", "configure", (char *) NULL };
+ static CONST char *optionStrings[] = { "cget", "configure", (char *) NULL };
enum options { MESSAGE_CGET, MESSAGE_CONFIGURE };
int index;
int result = TCL_OK;
@@ -479,7 +479,7 @@ ConfigureMessage(interp, msgPtr, objc, objv, flags)
*/
if (msgPtr->textVarName != NULL) {
- char *value;
+ CONST char *value;
value = Tcl_GetVar(interp, msgPtr->textVarName, TCL_GLOBAL_ONLY);
if (value == NULL) {
@@ -852,7 +852,7 @@ MessageTextVarProc(clientData, interp, name1, name2, flags)
int flags; /* Information about what happened. */
{
register Message *msgPtr = (Message *) clientData;
- char *value;
+ CONST char *value;
/*
* If the variable is unset, then immediately recreate it unless
diff --git a/generic/tkOldConfig.c b/generic/tkOldConfig.c
index 61b1258..24effae 100644
--- a/generic/tkOldConfig.c
+++ b/generic/tkOldConfig.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkOldConfig.c,v 1.9 2000/05/17 21:17:21 ericm Exp $
+ * RCS: @(#) $Id: tkOldConfig.c,v 1.9.6.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -707,7 +707,8 @@ FormatConfigInfo(interp, tkwin, specPtr, widgRec)
char *widgRec; /* Pointer to record holding current
* values of info for widget. */
{
- char *argv[6], *result;
+ CONST char *argv[6];
+ char *result;
char buffer[200];
Tcl_FreeProc *freeProc = (Tcl_FreeProc *) NULL;
@@ -735,9 +736,9 @@ FormatConfigInfo(interp, tkwin, specPtr, widgRec)
result = Tcl_Merge(5, argv);
if (freeProc != NULL) {
if ((freeProc == TCL_DYNAMIC) || (freeProc == (Tcl_FreeProc *) free)) {
- ckfree(argv[4]);
+ ckfree((char *)argv[4]);
} else {
- (*freeProc)(argv[4]);
+ (*freeProc)((char *)argv[4]);
}
}
return result;
diff --git a/generic/tkOption.c b/generic/tkOption.c
index d0cb8bc..cbcdca8 100644
--- a/generic/tkOption.c
+++ b/generic/tkOption.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkOption.c,v 1.8 2000/05/30 17:35:19 ericm Exp $
+ * RCS: @(#) $Id: tkOption.c,v 1.8.6.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -262,8 +262,8 @@ void
Tk_AddOption(tkwin, name, value, priority)
Tk_Window tkwin; /* Window token; option will be associated
* with main window for this window. */
- char *name; /* Multi-element name of option. */
- char *value; /* String value for option. */
+ CONST char *name; /* Multi-element name of option. */
+ CONST char *value; /* String value for option. */
int priority; /* Overall priority level to use for
* this option, such as TK_USER_DEFAULT_PRIO
* or TK_INTERACTIVE_PRIO. Must be between
@@ -273,8 +273,8 @@ Tk_AddOption(tkwin, name, value, priority)
register ElArray **arrayPtrPtr;
register Element *elPtr;
Element newEl;
- register char *p;
- char *field;
+ register CONST char *p;
+ CONST char *field;
int count, firstField, length;
#define TMP_SIZE 100
char tmp[TMP_SIZE+1];
@@ -638,7 +638,7 @@ Tk_OptionObjCmd(clientData, interp, objc, objv)
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
- static char *optionCmds[] = {
+ static CONST char *optionCmds[] = {
"add", "clear", "get", "readfile", NULL
};
@@ -1091,7 +1091,8 @@ ReadOptionFile(interp, tkwin, fileName, priority)
* or TK_INTERACTIVE_PRIO. Must be between
* 0 and TK_MAX_PRIO. */
{
- char *realName, *buffer;
+ CONST char *realName;
+ char *buffer;
int result, bufferSize;
Tcl_Channel chan;
Tcl_DString newName;
diff --git a/generic/tkPack.c b/generic/tkPack.c
index 106b547..a64b722 100644
--- a/generic/tkPack.c
+++ b/generic/tkPack.c
@@ -10,14 +10,16 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkPack.c,v 1.13 2001/09/26 20:25:17 pspjuth Exp $
+ * RCS: @(#) $Id: tkPack.c,v 1.13.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
#include "tkInt.h"
typedef enum {TOP, BOTTOM, LEFT, RIGHT} Side;
-static char *sideNames[] = {"top", "bottom", "left", "right", (char *) NULL };
+static CONST char *sideNames[] = {
+ "top", "bottom", "left", "right", (char *) NULL
+};
/* For each window that the packer cares about (either because
* the window is managed by the packer or because the window
@@ -201,7 +203,7 @@ Tk_PackObjCmd(clientData, interp, objc, objv)
{
Tk_Window tkwin = (Tk_Window) clientData;
char *argv2;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
/* after, append, before and unpack are deprecated */
"after", "append", "before", "unpack",
"configure", "forget", "info", "propagate", "slaves", (char *) NULL };
@@ -1221,7 +1223,7 @@ PackAfter(interp, prevPtr, masterPtr, objc, objv)
packPtr->flags |= OLD_STYLE;
for (index = 0 ; index < optionCount; index++) {
Tcl_Obj *curOptPtr = options[index];
- char *curOpt = Tcl_GetStringFromObj(curOptPtr, &length);
+ char *curOpt = Tcl_GetStringFromObj(curOptPtr, (int *) &length);
c = curOpt[0];
@@ -1550,7 +1552,7 @@ ConfigureSlaves(interp, tkwin, objc, objv)
Tk_Window other, slave, parent, ancestor;
int i, j, numWindows, tmp, positionGiven;
char *string;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-after", "-anchor", "-before", "-expand", "-fill",
"-in", "-ipadx", "-ipady", "-padx", "-pady", "-side", (char *) NULL };
enum options {
diff --git a/generic/tkPlace.c b/generic/tkPlace.c
index 746581a..5cd4c7a 100644
--- a/generic/tkPlace.c
+++ b/generic/tkPlace.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkPlace.c,v 1.10 2001/09/26 20:25:17 pspjuth Exp $
+ * RCS: @(#) $Id: tkPlace.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -209,8 +209,9 @@ Tk_PlaceObjCmd(clientData, interp, objc, objv)
char *string;
TkDisplay *dispPtr;
Tk_OptionTable optionTable;
- static char *optionStrings[] = { "configure", "forget", "info", "slaves",
- (char *) NULL };
+ static CONST char *optionStrings[] = {
+ "configure", "forget", "info", "slaves", (char *) NULL
+ };
enum options { PLACE_CONFIGURE, PLACE_FORGET, PLACE_INFO, PLACE_SLAVES };
int index;
diff --git a/generic/tkPointer.c b/generic/tkPointer.c
index 90cb8ba..33bc77a 100644
--- a/generic/tkPointer.c
+++ b/generic/tkPointer.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkPointer.c,v 1.4.18.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkPointer.c,v 1.4.18.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -20,7 +20,13 @@
#include "tkWinInt.h"
#endif
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
+#if defined(MAC_TCL)
+#include "tkMacInt.h"
+#define Cursor XCursor
+#endif
+
+# if defined(MAC_OSX_TK)
+#include "tkMacOSXInt.h"
#define Cursor XCursor
#endif
diff --git a/generic/tkScale.c b/generic/tkScale.c
index 1be68ec..a012534 100644
--- a/generic/tkScale.c
+++ b/generic/tkScale.c
@@ -18,7 +18,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkScale.c,v 1.14 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkScale.c,v 1.14.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -147,7 +147,7 @@ static Tk_OptionSpec optionSpecs[] = {
* to dispatch the scale widget command.
*/
-static char *commandNames[] = {
+static CONST char *commandNames[] = {
"cget", "configure", "coords", "get", "identify", "set", (char *) NULL
};
diff --git a/generic/tkSelect.c b/generic/tkSelect.c
index e52187d..c276904 100644
--- a/generic/tkSelect.c
+++ b/generic/tkSelect.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkSelect.c,v 1.7.2.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkSelect.c,v 1.7.2.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -325,7 +325,7 @@ Tk_DeleteSelHandler(tkwin, selection, target)
*/
((CommandInfo*)selPtr->clientData)->interp = NULL;
- Tcl_EventuallyFree(selPtr->clientData, Tcl_Free);
+ Tcl_EventuallyFree(selPtr->clientData, TCL_DYNAMIC);
}
ckfree((char *) selPtr);
}
@@ -690,8 +690,9 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
char *selName = NULL, *string;
int count, index;
Tcl_Obj **objs;
- static char *optionStrings[] = { "clear", "get", "handle", "own",
- (char *) NULL };
+ static CONST char *optionStrings[] = {
+ "clear", "get", "handle", "own", (char *) NULL
+ };
enum options { SELECTION_CLEAR, SELECTION_GET, SELECTION_HANDLE,
SELECTION_OWN };
@@ -707,8 +708,9 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
switch ((enum options) index) {
case SELECTION_CLEAR: {
- static char *clearOptionStrings[] = { "-displayof", "-selection",
- (char *) NULL };
+ static CONST char *clearOptionStrings[] = {
+ "-displayof", "-selection", (char *) NULL
+ };
enum clearOptions { CLEAR_DISPLAYOF, CLEAR_SELECTION };
int clearIndex;
@@ -764,8 +766,9 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
char *targetName = NULL;
Tcl_DString selBytes;
int result;
- static char *getOptionStrings[] = { "-displayof", "-selection",
- "-type", (char *) NULL };
+ static CONST char *getOptionStrings[] = {
+ "-displayof", "-selection", "-type", (char *) NULL
+ };
enum getOptions { GET_DISPLAYOF, GET_SELECTION, GET_TYPE };
int getIndex;
@@ -837,8 +840,9 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
char *formatName = NULL;
register CommandInfo *cmdInfoPtr;
int cmdLength;
- static char *handleOptionStrings[] = { "-format", "-selection",
- "-type", (char *) NULL };
+ static CONST char *handleOptionStrings[] = {
+ "-format", "-selection", "-type", (char *) NULL
+ };
enum handleOptions { HANDLE_FORMAT, HANDLE_SELECTION,
HANDLE_TYPE };
int handleIndex;
@@ -923,7 +927,7 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
register LostCommand *lostPtr;
char *script = NULL;
int cmdLength;
- static char *ownOptionStrings[] = {
+ static CONST char *ownOptionStrings[] = {
"-command", "-displayof", "-selection", (char *) NULL
};
enum ownOptions { OWN_COMMAND, OWN_DISPLAYOF, OWN_SELECTION };
@@ -1122,7 +1126,7 @@ TkSelDeadWindow(winPtr)
*/
((CommandInfo*)selPtr->clientData)->interp = NULL;
- Tcl_EventuallyFree(selPtr->clientData, Tcl_Free);
+ Tcl_EventuallyFree(selPtr->clientData, TCL_DYNAMIC);
}
ckfree((char *) selPtr);
}
@@ -1336,7 +1340,7 @@ HandleTclCommand(clientData, offset, buffer, maxBytes)
Tcl_DString oldResult;
Tcl_Obj *objPtr;
int extraBytes, charOffset, count, numChars;
- char *p;
+ CONST char *p;
/*
* We must also protect the interpreter and the command from being
diff --git a/generic/tkSquare.c b/generic/tkSquare.c
index 1a2704d..ee8d535 100644
--- a/generic/tkSquare.c
+++ b/generic/tkSquare.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkSquare.c,v 1.4 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkSquare.c,v 1.4.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -104,7 +104,7 @@ static void SquareDisplay _ANSI_ARGS_((ClientData clientData));
static void KeepInWindow _ANSI_ARGS_((Square *squarePtr));
static void SquareObjEventProc _ANSI_ARGS_((ClientData clientData,
XEvent *eventPtr));
-static int SquareWidgetCmd _ANSI_ARGS_((ClientData clientData,
+static int SquareWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
Tcl_Interp *, int objc, Tcl_Obj * CONST objv[]));
/*
@@ -169,7 +169,7 @@ SquareObjCmd(clientData, interp, objc, objv)
squarePtr->display = Tk_Display(tkwin);
squarePtr->interp = interp;
squarePtr->widgetCmd = Tcl_CreateObjCommand(interp,
- Tk_PathName(squarePtr->tkwin), SquareWidgetCmd,
+ Tk_PathName(squarePtr->tkwin), SquareWidgetObjCmd,
(ClientData) squarePtr, SquareDeletedProc);
squarePtr->gc = None;
squarePtr->optionTable = optionTable;
@@ -203,7 +203,7 @@ error:
/*
*--------------------------------------------------------------
*
- * SquareWidgetCmd --
+ * SquareWidgetObjCmd --
*
* This procedure is invoked to process the Tcl command
* that corresponds to a widget managed by this module.
@@ -219,7 +219,7 @@ error:
*/
static int
-SquareWidgetCmd(clientData, interp, objc, objv)
+SquareWidgetObjCmd(clientData, interp, objc, objv)
ClientData clientData; /* Information about square widget. */
Tcl_Interp *interp; /* Current interpreter. */
int objc; /* Number of arguments. */
@@ -227,7 +227,7 @@ SquareWidgetCmd(clientData, interp, objc, objv)
{
Square *squarePtr = (Square *) clientData;
int result = TCL_OK;
- static char *squareOptions[] = {"cget", "configure", (char *) NULL};
+ static CONST char *squareOptions[] = {"cget", "configure", (char *) NULL};
enum {
SQUARE_CGET, SQUARE_CONFIGURE
};
diff --git a/generic/tkStubInit.c b/generic/tkStubInit.c
index 34c7f6e..516f4c9 100644
--- a/generic/tkStubInit.c
+++ b/generic/tkStubInit.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkStubInit.c,v 1.28.2.3 2001/11/11 17:58:53 wolfsuit Exp $
+ * RCS: @(#) $Id: tkStubInit.c,v 1.28.2.4 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -256,18 +256,7 @@ TkIntStubs tkIntStubs = {
#ifdef MAC_OSX_TK
TkUnionRectWithRegion, /* 119 */
#endif /* MAC_OSX_TK */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 120 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 120 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGenerateActivateEvents, /* 120 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGenerateActivateEvents, /* 120 */
-#endif /* MAC_OSX_TCL */
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 121 */
#endif /* UNIX */
@@ -292,18 +281,7 @@ TkIntStubs tkIntStubs = {
#ifdef MAC_OSX_TCL
TkpDefineNativeBitmaps, /* 122 */
#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 123 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 123 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkpGetMS, /* 123 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkpGetMS, /* 123 */
-#endif /* MAC_OSX_TCL */
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 124 */
#endif /* UNIX */
@@ -316,110 +294,23 @@ TkIntStubs tkIntStubs = {
#ifdef MAC_OSX_TCL
TkpGetNativeAppBitmap, /* 124 */
#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 125 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 125 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkPointerDeadWindow, /* 125 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkPointerDeadWindow, /* 125 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 126 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 126 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkpSetCapture, /* 126 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkpSetCapture, /* 126 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 127 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 127 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkpSetCursor, /* 127 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkpSetCursor, /* 127 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 128 */
-#endif /* UNIX */
-#ifdef __WIN32__
- NULL, /* 128 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkpWmSetState, /* 128 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkpWmSetState, /* 128 */
-#endif /* MAC_OSX_TCL */
NULL, /* 129 */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 130 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 130 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGetTransientMaster, /* 130 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGetTransientMaster, /* 130 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 131 */
-#endif /* UNIX */
-#ifdef __WIN32__
- NULL, /* 131 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGenerateButtonEvent, /* 131 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGenerateButtonEvent, /* 131 */
-#endif /* MAC_OSX_TCL */
NULL, /* 132 */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 133 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 133 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGenWMDestroyEvent, /* 133 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGenWMDestroyEvent, /* 133 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 134 */
-#endif /* UNIX */
-#ifdef __WIN32__
- NULL, /* 134 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGenWMConfigureEvent, /* 134 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGenWMConfigureEvent, /* 134 */
-#endif /* MAC_OSX_TCL */
TkpDrawHighlightBorder, /* 135 */
TkSetFocusWin, /* 136 */
TkpSetKeycodeAndState, /* 137 */
TkpGetKeySym, /* 138 */
TkpInitKeymapInfo, /* 139 */
TkPhotoGetValidRegion, /* 140 */
+ TkWmStackorderToplevel, /* 141 */
};
TkIntPlatStubs tkIntPlatStubs = {
@@ -474,8 +365,8 @@ TkIntPlatStubs tkIntPlatStubs = {
#endif /* __WIN32__ */
#ifdef MAC_TCL
TkGenerateActivateEvents, /* 0 */
- TkpCreateNativeBitmap, /* 1 */
- TkpDefineNativeBitmaps, /* 2 */
+ NULL, /* 1 */
+ NULL, /* 2 */
TkpGetMS, /* 3 */
NULL, /* 4 */
TkPointerDeadWindow, /* 5 */
@@ -490,27 +381,27 @@ TkIntPlatStubs tkIntPlatStubs = {
TkGenerateButtonEvent, /* 14 */
NULL, /* 15 */
TkGenWMDestroyEvent, /* 16 */
- TkGenWMConfigureEvent, /* 17 */
+ NULL, /* 17 */
TkMacButtonKeyState, /* 18 */
TkMacClearMenubarActive, /* 19 */
- TkMacConvertEvent, /* 20 */
+ NULL, /* 20 */
TkMacDispatchMenuEvent, /* 21 */
TkMacInstallCursor, /* 22 */
- TkMacConvertTkEvent, /* 23 */
+ NULL, /* 23 */
TkMacHandleTearoffMenu, /* 24 */
NULL, /* 25 */
- TkMacInvalClipRgns, /* 26 */
+ NULL, /* 26 */
TkMacDoHLEvent, /* 27 */
NULL, /* 28 */
TkMacGenerateTime, /* 29 */
- TkMacGetDrawablePort, /* 30 */
+ NULL, /* 30 */
TkMacGetScrollbarGrowWindow, /* 31 */
TkMacGetXWindow, /* 32 */
TkMacGrowToplevel, /* 33 */
TkMacHandleMenuSelect, /* 34 */
- TkMacHaveAppearance, /* 35 */
- TkMacInitAppleEvents, /* 36 */
- TkMacInitMenus, /* 37 */
+ NULL, /* 35 */
+ NULL, /* 36 */
+ NULL, /* 37 */
TkMacInvalidateWindow, /* 38 */
TkMacIsCharacterMissing, /* 39 */
TkMacMakeRealWindowExist, /* 40 */
@@ -539,6 +430,7 @@ TkIntPlatStubs tkIntPlatStubs = {
TkMacContainerId, /* 63 */
TkMacGetHostToplevel, /* 64 */
TkMacPreprocessMenu, /* 65 */
+ TkpIsWindowFloating, /* 66 */
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK
TkGenerateActivateEvents, /* 0 */
@@ -589,6 +481,12 @@ TkIntPlatStubs tkIntPlatStubs = {
TkMacOSXPreprocessMenu, /* 45 */
TkpIsWindowFloating, /* 46 */
TkMacOSXGetCapture, /* 47 */
+ NULL, /* 48 */
+ TkGetTransientMaster, /* 49 */
+ TkGenerateButtonEvent, /* 50 */
+ TkGenWMDestroyEvent, /* 51 */
+ TkGenWMConfigureEvent, /* 52 */
+ TkpGetMS, /* 53 */
#endif /* MAC_OSX_TK */
};
diff --git a/generic/tkStubLib.c b/generic/tkStubLib.c
index a7d10ac..08d6113 100644
--- a/generic/tkStubLib.c
+++ b/generic/tkStubLib.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkStubLib.c,v 1.6.2.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkStubLib.c,v 1.6.2.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
/*
@@ -18,13 +18,9 @@
* do these includes before we add the stubs defines. This a hack.
*/
-#if defined(MAC_TCL)
-#include "tkMacInt.h"
-#else defined(MAC_OSX_TK)
+#if defined(MAC_OSX_TK)
#include "tkMacOSXInt.h"
-#endif
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
#include "tkInt.h"
#include "tkPort.h"
#endif /* MAC_TCL */
@@ -46,8 +42,6 @@
#endif
#undef USE_TK_STUB_PROCS
-#if !defined(MAC_TCL) && !defined(MAC_OSX_TK)
-
#include "tkPort.h"
#include "tkInt.h"
@@ -55,7 +49,9 @@
#include "tkWinInt.h"
#endif
-#endif /* !MAC_TCL */
+#ifdef MAC_TCL
+#include "tkMacInt.h"
+#endif
#include "tkDecls.h"
#include "tkIntDecls.h"
diff --git a/generic/tkTest.c b/generic/tkTest.c
index 41976c3..65f9aab 100644
--- a/generic/tkTest.c
+++ b/generic/tkTest.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkTest.c,v 1.15.6.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkTest.c,v 1.15.6.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -631,7 +631,7 @@ TestobjconfigObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *options[] = {"alltypes", "chain1", "chain2",
+ static CONST char *options[] = {"alltypes", "chain1", "chain2",
"configerror", "delete", "info", "internal", "new",
"notenoughparams", "twowindows", (char *) NULL};
enum {
@@ -1354,7 +1354,9 @@ TrivialConfigObjCmd(clientData, interp, objc, objv)
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
int result = TCL_OK;
- static char *options[] = {"cget", "configure", "csave", (char *) NULL};
+ static CONST char *options[] = {
+ "cget", "configure", "csave", (char *) NULL
+ };
enum {
CGET, CONFIGURE, CSAVE
};
@@ -1538,7 +1540,7 @@ TestfontObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *options[] = {"counts", "subfonts", (char *) NULL};
+ static CONST char *options[] = {"counts", "subfonts", (char *) NULL};
enum option {COUNTS, SUBFONTS};
int index;
Tk_Window tkwin;
diff --git a/generic/tkText.c b/generic/tkText.c
index cd2c64b..f848d21 100644
--- a/generic/tkText.c
+++ b/generic/tkText.c
@@ -14,7 +14,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkText.c,v 1.18.4.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkText.c,v 1.18.4.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "default.h"
@@ -42,6 +42,9 @@ static Tk_CustomOption stateOption = {
*/
static Tk_ConfigSpec configSpecs[] = {
+ {TK_CONFIG_BOOLEAN, "-autoseparators", "autoSeparators",
+ "AutoSeparators", DEF_TEXT_AUTO_SEPARATORS,
+ Tk_Offset(TkText, autoSeparators), 0},
{TK_CONFIG_BORDER, "-background", "background", "Background",
DEF_TEXT_BG_COLOR, Tk_Offset(TkText, border), TK_CONFIG_COLOR_ONLY},
{TK_CONFIG_BORDER, "-background", "background", "Background",
@@ -129,6 +132,8 @@ static Tk_ConfigSpec configSpecs[] = {
{TK_CONFIG_STRING, "-takefocus", "takeFocus", "TakeFocus",
DEF_TEXT_TAKE_FOCUS, Tk_Offset(TkText, takeFocus),
TK_CONFIG_NULL_OK},
+ {TK_CONFIG_BOOLEAN, "-undo", "undo", "Undo",
+ DEF_TEXT_UNDO, Tk_Offset(TkText, undo), 0},
{TK_CONFIG_INT, "-width", "width", "Width",
DEF_TEXT_WIDTH, Tk_Offset(TkText, width), 0},
{TK_CONFIG_CUSTOM, "-wrap", "wrap", "Wrap",
@@ -292,6 +297,8 @@ static int TextFetchSelection _ANSI_ARGS_((ClientData clientData,
int offset, char *buffer, int maxBytes));
static int TextSearchCmd _ANSI_ARGS_((TkText *textPtr,
Tcl_Interp *interp, int argc, char **argv));
+static int TextEditCmd _ANSI_ARGS_((TkText *textPtr,
+ Tcl_Interp *interp, int argc, char **argv));
static int TextWidgetCmd _ANSI_ARGS_((ClientData clientData,
Tcl_Interp *interp, int argc, char **argv));
static void TextWorldChanged _ANSI_ARGS_((
@@ -304,6 +311,19 @@ static void DumpLine _ANSI_ARGS_((Tcl_Interp *interp,
static int DumpSegment _ANSI_ARGS_((Tcl_Interp *interp, char *key,
char *value, char * command, TkTextIndex *index,
int what));
+static int TextEditUndo _ANSI_ARGS_((Tcl_Interp * interp,
+ TkText *textPtr));
+static int TextEditRedo _ANSI_ARGS_((Tcl_Interp * interp,
+ TkText *textPtr));
+static void TextGetText _ANSI_ARGS_((TkTextIndex * index1,
+ TkTextIndex * index2, Tcl_DString *dsPtr));
+static void pushStack _ANSI_ARGS_(( TkTextEditAtom ** stack,
+ TkTextEditAtom * elem ));
+
+static TkTextEditAtom * popStack _ANSI_ARGS_((TkTextEditAtom ** stack));
+static void clearStack _ANSI_ARGS_((TkTextEditAtom ** stack));
+static void insertSeparator _ANSI_ARGS_((TkTextEditAtom ** stack));
+static void updateDirtyFlag _ANSI_ARGS_((TkText *textPtr));
/*
* The structure below defines text class behavior by means of procedures
@@ -361,7 +381,14 @@ Tk_TextCmd(clientData, interp, argc, argv)
return TCL_ERROR;
}
+ /*
+ * Create the text widget and initialize everything to zero,
+ * then set the necessary initial (non-NULL) values.
+ */
+
textPtr = (TkText *) ckalloc(sizeof(TkText));
+ memset((VOID *) textPtr, 0, sizeof(TkText));
+
textPtr->tkwin = new;
textPtr->display = Tk_Display(new);
textPtr->interp = interp;
@@ -370,61 +397,24 @@ Tk_TextCmd(clientData, interp, argc, argv)
(ClientData) textPtr, TextCmdDeletedProc);
textPtr->tree = TkBTreeCreate(textPtr);
Tcl_InitHashTable(&textPtr->tagTable, TCL_STRING_KEYS);
- textPtr->numTags = 0;
Tcl_InitHashTable(&textPtr->markTable, TCL_STRING_KEYS);
Tcl_InitHashTable(&textPtr->windowTable, TCL_STRING_KEYS);
Tcl_InitHashTable(&textPtr->imageTable, TCL_STRING_KEYS);
textPtr->state = TK_STATE_NORMAL;
- textPtr->border = NULL;
- textPtr->borderWidth = 0;
- textPtr->padX = 0;
- textPtr->padY = 0;
textPtr->relief = TK_RELIEF_FLAT;
- textPtr->highlightWidth = 0;
- textPtr->highlightBgColorPtr = NULL;
- textPtr->highlightColorPtr = NULL;
textPtr->cursor = None;
- textPtr->fgColor = NULL;
- textPtr->tkfont = NULL;
textPtr->charWidth = 1;
- textPtr->spacing1 = 0;
- textPtr->spacing2 = 0;
- textPtr->spacing3 = 0;
- textPtr->tabOptionString = NULL;
- textPtr->tabArrayPtr = NULL;
textPtr->wrapMode = TEXT_WRAPMODE_CHAR;
- textPtr->width = 0;
- textPtr->height = 0;
- textPtr->setGrid = 0;
textPtr->prevWidth = Tk_Width(new);
textPtr->prevHeight = Tk_Height(new);
TkTextCreateDInfo(textPtr);
TkTextMakeByteIndex(textPtr->tree, 0, 0, &startIndex);
TkTextSetYView(textPtr, &startIndex, 0);
- textPtr->selTagPtr = NULL;
- textPtr->selBorder = NULL;
- textPtr->selBdString = NULL;
- textPtr->selFgColorPtr = NULL;
textPtr->exportSelection = 1;
- textPtr->abortSelections = 0;
- textPtr->insertMarkPtr = NULL;
- textPtr->insertBorder = NULL;
- textPtr->insertWidth = 0;
- textPtr->insertBorderWidth = 0;
- textPtr->insertOnTime = 0;
- textPtr->insertOffTime = 0;
- textPtr->insertBlinkHandler = (Tcl_TimerToken) NULL;
- textPtr->bindingTable = NULL;
- textPtr->currentMarkPtr = NULL;
textPtr->pickEvent.type = LeaveNotify;
- textPtr->pickEvent.xcrossing.x = 0;
- textPtr->pickEvent.xcrossing.y = 0;
- textPtr->numCurTags = 0;
- textPtr->curTagArrayPtr = NULL;
- textPtr->takeFocus = NULL;
- textPtr->xScrollCmd = NULL;
- textPtr->yScrollCmd = NULL;
- textPtr->flags = 0;
+ textPtr->undo = 1;
+ textPtr->isDirtyIncrement = 1;
+ textPtr->autoSeparators = 1;
/*
* Create the "sel" tag and the "current" and "insert" marks.
@@ -484,9 +474,8 @@ TextWidgetCmd(clientData, interp, argc, argv)
char **argv; /* Argument strings. */
{
register TkText *textPtr = (TkText *) clientData;
- int result = TCL_OK;
+ int c, result = TCL_OK;
size_t length;
- int c;
TkTextIndex index1, index2;
if (argc < 2) {
@@ -635,6 +624,8 @@ TextWidgetCmd(clientData, interp, argc, argv)
sprintf(buf, "%d %d %d %d %d", x, y, width, height, base);
Tcl_SetResult(interp, buf, TCL_VOLATILE);
}
+ } else if ((c == 'e') && (strncmp(argv[1], "edit", length) == 0)) {
+ result = TextEditCmd(textPtr, interp, argc, argv);
} else if ((c == 'g') && (strncmp(argv[1], "get", length) == 0)) {
if ((argc != 3) && (argc != 4)) {
Tcl_AppendResult(interp, "wrong # args: should be \"",
@@ -654,34 +645,16 @@ TextWidgetCmd(clientData, interp, argc, argv)
result = TCL_ERROR;
goto done;
}
- if (TkTextIndexCmp(&index1, &index2) >= 0) {
- goto done;
- }
- while (1) {
- int offset, last, savedChar;
- TkTextSegment *segPtr;
-
- segPtr = TkTextIndexToSeg(&index1, &offset);
- last = segPtr->size;
- if (index1.linePtr == index2.linePtr) {
- int last2;
-
- if (index2.byteIndex == index1.byteIndex) {
- break;
- }
- last2 = index2.byteIndex - index1.byteIndex + offset;
- if (last2 < last) {
- last = last2;
- }
- }
- if (segPtr->typePtr == &tkTextCharType) {
- savedChar = segPtr->body.chars[last];
- segPtr->body.chars[last] = 0;
- Tcl_AppendResult(interp, segPtr->body.chars + offset,
- (char *) NULL);
- segPtr->body.chars[last] = savedChar;
- }
- TkTextIndexForwBytes(&index1, last-offset, &index1);
+ if (TkTextIndexCmp(&index1, &index2) < 0) {
+ /*
+ * Place the text in a DString and move it to the result. Since
+ * this could in principle be a megabyte or more, we want to do
+ * it efficiently!
+ */
+ Tcl_DString ds;
+ TextGetText(&index1, &index2, &ds);
+ Tcl_DStringResult(interp, &ds);
+ Tcl_DStringFree(&ds);
}
} else if ((c == 'i') && (strncmp(argv[1], "index", length) == 0)
&& (length >= 3)) {
@@ -703,7 +676,7 @@ TextWidgetCmd(clientData, interp, argc, argv)
} else if ((c == 'i') && (strncmp(argv[1], "insert", length) == 0)
&& (length >= 3)) {
int i, j, numTags;
- char **tagNames;
+ CONST char **tagNames;
TkTextTag **oldTagArrayPtr;
if (argc < 4) {
@@ -770,8 +743,8 @@ TextWidgetCmd(clientData, interp, argc, argv)
} else {
Tcl_AppendResult(interp, "bad option \"", argv[1],
"\": must be bbox, cget, compare, configure, debug, delete, ",
- "dlineinfo, dump, get, image, index, insert, mark, scan, ",
- "search, see, tag, window, xview, or yview",
+ "dlineinfo, dump, edit, get, image, index, insert, mark, ",
+ "scan, search, see, tag, window, xview, or yview",
(char *) NULL);
result = TCL_ERROR;
}
@@ -838,6 +811,8 @@ DestroyText(memPtr)
if (textPtr->bindingTable != NULL) {
Tk_DeleteBindingTable(textPtr->bindingTable);
}
+ clearStack(&(textPtr->undoStack));
+ clearStack(&(textPtr->redoStack));
/*
* NOTE: do NOT free up selBorder, selBdString, or selFgColorPtr:
@@ -1208,6 +1183,8 @@ InsertChars(textPtr, indexPtr, string)
{
int lineIndex, resetView, offset;
TkTextIndex newTop;
+ TkTextEditAtom * insertion;
+ char indexBuffer[TK_POS_CHARS];
/*
* Don't allow insertions on the last (dummy) line of the text.
@@ -1236,6 +1213,32 @@ InsertChars(textPtr, indexPtr, string)
}
TkTextChanged(textPtr, indexPtr, indexPtr);
TkBTreeInsertChars(indexPtr, string);
+
+ /*
+ * Push the insertion on the undo stack
+ */
+
+ if ( textPtr->undo ) {
+ if (textPtr->autoSeparators && textPtr->undoStack &&
+ textPtr->undoStack->type != TK_EDIT_INSERT) {
+ insertSeparator(&(textPtr->undoStack));
+ }
+
+ insertion = (TkTextEditAtom *) ckalloc(sizeof(TkTextEditAtom));
+ insertion->type = TK_EDIT_INSERT;
+
+ TkTextPrintIndex(indexPtr,indexBuffer);
+ insertion->index = (char *) ckalloc(strlen(indexBuffer) + 1);
+ strcpy(insertion->index,indexBuffer);
+
+ insertion->string = (char *) ckalloc(strlen(string) + 1);
+ strcpy(insertion->string,string);
+
+ pushStack(&(textPtr->undoStack),insertion);
+ clearStack(&(textPtr->redoStack));
+ }
+ updateDirtyFlag(textPtr);
+
if (resetView) {
TkTextMakeByteIndex(textPtr->tree, lineIndex, 0, &newTop);
TkTextIndexForwBytes(&newTop, offset, &newTop);
@@ -1279,6 +1282,8 @@ DeleteChars(textPtr, index1String, index2String)
{
int line1, line2, line, byteIndex, resetView;
TkTextIndex index1, index2;
+ TkTextEditAtom * deletion;
+ char indexBuffer[TK_POS_CHARS];
/*
* Parse the starting and stopping indices.
@@ -1390,6 +1395,37 @@ DeleteChars(textPtr, index1String, index2String)
byteIndex -= (index2.byteIndex - index1.byteIndex);
}
}
+
+ /*
+ * Push the deletion on the undo stack
+ */
+
+ if (textPtr->undo) {
+ Tcl_DString ds;
+
+ if (textPtr->autoSeparators && (textPtr->undoStack != NULL)
+ && (textPtr->undoStack->type != TK_EDIT_DELETE)) {
+ insertSeparator(&(textPtr->undoStack));
+ }
+
+ deletion = (TkTextEditAtom *) ckalloc(sizeof(TkTextEditAtom));
+ deletion->type = TK_EDIT_DELETE;
+
+ TkTextPrintIndex(&index1, indexBuffer);
+ deletion->index = (char *) ckalloc(strlen(indexBuffer) + 1);
+ strcpy(deletion->index, indexBuffer);
+
+ TextGetText(&index1, &index2, &ds);
+ deletion->string =
+ (char *) ckalloc((unsigned int) Tcl_DStringLength(&ds) + 1);
+ strcpy(deletion->string, Tcl_DStringValue(&ds));
+ Tcl_DStringFree(&ds);
+
+ pushStack(&(textPtr->undoStack), deletion);
+ clearStack(&(textPtr->redoStack));
+ }
+ updateDirtyFlag(textPtr);
+
TkBTreeDeleteChars(&index1, &index2);
if (resetView) {
TkTextMakeByteIndex(textPtr->tree, line, byteIndex, &index1);
@@ -1569,6 +1605,7 @@ TkTextLostSelection(clientData)
ClientData clientData; /* Information about text widget. */
{
register TkText *textPtr = (TkText *) clientData;
+ XEvent event;
#ifdef ALWAYS_SHOW_SELECTION
TkTextIndex start, end;
@@ -1587,6 +1624,21 @@ TkTextLostSelection(clientData)
TkTextRedrawTag(textPtr, &start, &end, textPtr->selTagPtr, 1);
TkBTreeTag(&start, &end, textPtr->selTagPtr, 0);
#endif
+
+ /*
+ * Send an event that the selection changed. This is equivalent to
+ * "event generate $textWidget <<Selection>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Selection");
+ Tk_HandleEvent(&event);
+
textPtr->flags &= ~GOT_SELECTION;
}
@@ -1912,7 +1964,7 @@ TextSearchCmd(textPtr, interp, argc, argv)
i = p - startOfLine;
thisLength = patLength;
} else {
- char *start, *end;
+ CONST char *start, *end;
int match;
match = Tcl_RegExpExec(interp, regexp,
@@ -2073,7 +2125,7 @@ TkTextGetTabs(interp, tkwin, string)
* the text manual entry for details. */
{
int argc, i, count, c;
- char **argv;
+ CONST char **argv;
TkTextTabArray *tabArrayPtr;
TkTextTab *tabPtr;
Tcl_UniChar ch;
@@ -2319,9 +2371,9 @@ DumpLine(interp, textPtr, what, linePtr, startByte, endByte, lineno, command)
offset += segPtr->size, segPtr = segPtr->nextPtr) {
if ((what & TK_DUMP_TEXT) && (segPtr->typePtr == &tkTextCharType) &&
(offset + segPtr->size > startByte)) {
- char savedChar; /* Last char used in the seg */
- int last = segPtr->size; /* Index of savedChar */
- int first = 0; /* Index of first char in seg */
+ char savedChar; /* Last char used in the seg */
+ int last = segPtr->size; /* Index of savedChar */
+ int first = 0; /* Index of first char in seg */
if (offset + segPtr->size > endByte) {
last = endByte - offset;
}
@@ -2406,7 +2458,7 @@ DumpSegment(interp, key, value, command, index, what)
Tcl_AppendElement(interp, buffer);
return TCL_OK;
} else {
- char *argv[4];
+ CONST char *argv[4];
char *list;
int result;
argv[0] = key;
@@ -2419,4 +2471,475 @@ DumpSegment(interp, key, value, command, index, what)
return result;
}
}
+
+/*
+ * pushStack
+ * Push elem on the stack identified by stack.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static void pushStack ( stack, elem )
+ TkTextEditAtom ** stack;
+ TkTextEditAtom * elem;
+{
+ elem->next = *stack;
+ *stack = elem;
+}
+
+/*
+ * popStack --
+ * Remove and return the top element from the stack identified by
+ * stack.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static TkTextEditAtom * popStack ( stack )
+ TkTextEditAtom ** stack ;
+{
+ TkTextEditAtom * elem = NULL;
+ if (*stack != NULL ) {
+ elem = *stack;
+ *stack = elem->next;
+ }
+ return elem;
+}
+
+/*
+ * insertSeparator --
+ * insert a separator on the stack, indicating a border for
+ * an undo/redo chunk.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static void insertSeparator ( stack )
+ TkTextEditAtom ** stack;
+{
+ TkTextEditAtom * separator;
+
+ if ( *stack != NULL && (*stack)->type != TK_EDIT_SEPARATOR ) {
+ separator = (TkTextEditAtom *) ckalloc(sizeof(TkTextEditAtom));
+ separator->type = TK_EDIT_SEPARATOR;
+ pushStack(stack,separator);
+ }
+}
+
+/*
+ * clearStack --
+ * Clear an entire undo or redo stack and destroy all elements in it.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static void clearStack ( stack )
+ TkTextEditAtom ** stack; /* An Undo or Redo stack */
+{
+ TkTextEditAtom * elem;
+
+ while ( (elem = popStack(stack)) ) {
+ if ( elem->type != TK_EDIT_SEPARATOR ) {
+ ckfree(elem->index);
+ ckfree(elem->string);
+ }
+ ckfree((char *)elem);
+ }
+ *stack = NULL;
+}
+
+/*
+ * TextEditUndo --
+ * undo the last change.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static int TextEditUndo (interp,textPtr)
+ Tcl_Interp * interp;
+ TkText * textPtr; /* Overall information about text widget. */
+{
+ TkTextEditAtom * elem;
+ TkTextIndex fromIndex, toIndex;
+ char buffer[TK_POS_CHARS];
+ char viewIndex[TK_POS_CHARS];
+
+ if ( ! textPtr->undo ) {
+ return TCL_OK;
+ }
+
+ /* Turn off the undo feature */
+
+ textPtr->undo = 0;
+
+ /* insert a separator on the redo stack */
+
+ insertSeparator(&(textPtr->redoStack));
+
+ /* Pop and skip the first separator if there is one*/
+
+ elem = popStack(&(textPtr->undoStack));
+
+ if ( elem == NULL ) {
+ textPtr->undo = 1;
+ return TCL_ERROR;
+ }
+
+ if ( ( elem != NULL ) && ( elem->type == TK_EDIT_SEPARATOR ) ) {
+ ckfree((char *) elem);
+ elem = popStack(&(textPtr->undoStack));
+ }
+
+ while ( elem && (elem->type != TK_EDIT_SEPARATOR) ) {
+ switch ( elem->type ) {
+ case TK_EDIT_INSERT:
+ TkTextGetIndex(interp,textPtr,elem->index,&toIndex);
+ strcpy(viewIndex,elem->index);
+ TkTextIndexForwBytes(&toIndex,(int)strlen(elem->string),&toIndex);
+ TkTextPrintIndex(&toIndex,buffer);
+ textPtr->isDirtyIncrement = -1;
+ DeleteChars(textPtr,elem->index,buffer);
+ textPtr->isDirtyIncrement = 1;
+ break;
+ case TK_EDIT_DELETE:
+ TkTextGetIndex(interp,textPtr,elem->index,&fromIndex);
+ textPtr->isDirtyIncrement = -1;
+ InsertChars(textPtr,&fromIndex,elem->string);
+ TkTextIndexForwBytes(&fromIndex,(int)strlen(elem->string),&toIndex);
+ TkTextPrintIndex(&toIndex,viewIndex);
+ textPtr->isDirtyIncrement = 1;
+ break;
+ default:
+ return TCL_ERROR;
+ }
+ pushStack(&(textPtr->redoStack),elem);
+ elem = popStack(&(textPtr->undoStack));
+ }
+
+ /* view the last changed position */
+
+ TkTextGetIndex(interp,textPtr,viewIndex,&toIndex);
+ TkTextSetMark(textPtr, "insert", &toIndex);
+
+ /* insert a separator on the undo stack */
+
+ insertSeparator(&(textPtr->undoStack));
+
+ /* Turn back on the undo feature */
+
+ textPtr->undo = 1;
+
+ return TCL_OK;
+}
+
+/*
+ * TextEditRedo --
+ * redo the last undone change.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static int TextEditRedo (interp,textPtr)
+ Tcl_Interp * interp;
+ TkText * textPtr; /* Overall information about text widget. */
+{
+ TkTextEditAtom *elem;
+ TkTextIndex fromIndex, toIndex;
+ char buffer[TK_POS_CHARS];
+ char viewIndex[TK_POS_CHARS];
+
+ if (!textPtr->undo) {
+ return TCL_OK;
+ }
+
+ /* Turn off the undo feature temporarily */
+
+ textPtr->undo = 0;
+ /* insert a separator on the undo stack */
+
+ insertSeparator(&(textPtr->undoStack));
+
+ /* Pop and skip the first separator if there is one*/
+
+ elem = popStack(&(textPtr->redoStack));
+
+ if ( elem == NULL ) {
+ textPtr->undo = 1;
+ return TCL_ERROR;
+ }
+
+ if ( ( elem != NULL ) && ( elem->type == TK_EDIT_SEPARATOR ) ) {
+ ckfree((char *) elem);
+ elem = popStack(&(textPtr->redoStack));
+ }
+
+ while ( elem && (elem->type != TK_EDIT_SEPARATOR) ) {
+ switch ( elem->type ) {
+ case TK_EDIT_INSERT:
+ TkTextGetIndex(interp, textPtr, elem->index, &fromIndex);
+ InsertChars(textPtr, &fromIndex, elem->string);
+ TkTextIndexForwBytes(&fromIndex, (int) strlen(elem->string),
+ &toIndex);
+ TkTextPrintIndex(&toIndex, viewIndex);
+ break;
+ case TK_EDIT_DELETE:
+ TkTextGetIndex(interp, textPtr, elem->index, &toIndex);
+ strcpy(viewIndex, elem->index);
+ TkTextIndexForwBytes(&toIndex, (int) strlen(elem->string),
+ &toIndex);
+ TkTextPrintIndex(&toIndex, buffer);
+ DeleteChars(textPtr, elem->index, buffer);
+ break;
+ default:
+ return TCL_ERROR;
+ }
+ pushStack(&(textPtr->undoStack), elem);
+ elem = popStack(&(textPtr->redoStack));
+ }
+
+ /* view the last changed position */
+
+ TkTextGetIndex(interp, textPtr, viewIndex, &toIndex);
+ TkTextSetMark(textPtr, "insert", &toIndex);
+
+ /* insert a separator on the undo stack */
+
+ insertSeparator(&(textPtr->undoStack));
+
+ /* Turn back on the undo feature */
+
+ textPtr->undo = 1;
+
+ return TCL_OK;
+}
+
+/*
+ * TextEditCmd --
+ *
+ * Handle the subcommands to "$text edit ...".
+ * See documentation for details.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static int
+TextEditCmd(textPtr, interp, argc, argv)
+ TkText *textPtr; /* Information about text widget. */
+ Tcl_Interp *interp; /* Current interpreter. */
+ int argc; /* Number of arguments. */
+ char **argv; /* Argument strings. */
+{
+ int c, setModified;
+ size_t length;
+
+ if (argc < 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit option ?arg arg ...?\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ c = argv[2][0];
+ length = strlen(argv[2]);
+ if ((c == 'm') && (strncmp(argv[2], "modified", length) == 0)) {
+ if (argc == 3) {
+ Tcl_SetObjResult(interp, Tcl_NewBooleanObj(textPtr->isDirty));
+ } else if (argc != 4) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit modified ?boolean?\"", (char *) NULL);
+ return TCL_ERROR;
+ } else {
+ XEvent event;
+ if (Tcl_GetBoolean(interp, argv[3], &setModified) != TCL_OK) {
+ return TCL_ERROR;
+ }
+ /*
+ * Set or reset the dirty info and trigger a Modified event.
+ */
+
+ if (setModified) {
+ textPtr->isDirty = 1;
+ textPtr->modifiedSet = 1;
+ } else {
+ textPtr->isDirty = 0;
+ textPtr->modifiedSet = 0;
+ }
+
+ /*
+ * Send an event that the text was modified. This is equivalent to
+ * "event generate $textWidget <<Modified>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Modified");
+ Tk_HandleEvent(&event);
+ }
+ } else if ((c == 'r') && (strncmp(argv[2], "redo", length) == 0)
+ && (length >= 3)) {
+ if (argc != 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit redo\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ if ( TextEditRedo(interp,textPtr) ) {
+ Tcl_AppendResult(interp, "nothing to redo", (char *) NULL);
+ return TCL_ERROR;
+ }
+ } else if ((c == 'r') && (strncmp(argv[2], "reset", length) == 0)
+ && (length >= 3)) {
+ if (argc != 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit reset\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ clearStack(&(textPtr->undoStack));
+ clearStack(&(textPtr->redoStack));
+ } else if ((c == 's') && (strncmp(argv[2], "separator", length) == 0)) {
+ if (argc != 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit separator\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ insertSeparator(&(textPtr->undoStack));
+ } else if ((c == 'u') && (strncmp(argv[2], "undo", length) == 0)) {
+ if (argc != 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit undo\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ if ( TextEditUndo(interp,textPtr) ) {
+ Tcl_AppendResult(interp, "nothing to undo",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+ } else {
+ Tcl_AppendResult(interp, "bad edit option \"", argv[2],
+ "\": must be modified, redo, reset, separator or undo",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ return TCL_OK;
+}
+
+/*
+ * TextGetText --
+ * Returns the text from indexPtr1 to indexPtr2, placing that text
+ * in the Tcl_DString given. That DString should be free or uninitialized.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Memory will be allocated for the DString. Remember to free it.
+ */
+
+static void
+TextGetText(indexPtr1,indexPtr2, dsPtr)
+ TkTextIndex *indexPtr1;
+ TkTextIndex *indexPtr2;
+ Tcl_DString *dsPtr;
+{
+ TkTextIndex tmpIndex;
+ Tcl_DStringInit(dsPtr);
+
+ TkTextMakeByteIndex(indexPtr1->tree, TkBTreeLineIndex(indexPtr1->linePtr),
+ indexPtr1->byteIndex, &tmpIndex);
+
+ if (TkTextIndexCmp(indexPtr1, indexPtr2) < 0) {
+ while (1) {
+ int offset, last;
+ TkTextSegment *segPtr;
+
+ segPtr = TkTextIndexToSeg(&tmpIndex, &offset);
+ last = segPtr->size;
+ if (tmpIndex.linePtr == indexPtr2->linePtr) {
+ int last2;
+
+ if (indexPtr2->byteIndex == tmpIndex.byteIndex) {
+ break;
+ }
+ last2 = indexPtr2->byteIndex - tmpIndex.byteIndex + offset;
+ if (last2 < last) {
+ last = last2;
+ }
+ }
+ if (segPtr->typePtr == &tkTextCharType) {
+ Tcl_DStringAppend(dsPtr, segPtr->body.chars + offset,
+ last - offset);
+ }
+ TkTextIndexForwBytes(&tmpIndex, last-offset, &tmpIndex);
+ }
+ }
+}
+
+/*
+ * updateDirtyFlag --
+ * increases the dirtyness of the text widget
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static void updateDirtyFlag (textPtr)
+ TkText *textPtr; /* Information about text widget. */
+{
+ int oldDirtyFlag;
+
+ if (textPtr->modifiedSet) {
+ return;
+ }
+ oldDirtyFlag = textPtr->isDirty;
+ textPtr->isDirty += textPtr->isDirtyIncrement;
+ if (textPtr->isDirty == 0 || oldDirtyFlag == 0) {
+ XEvent event;
+ /*
+ * Send an event that the text was modified. This is equivalent to
+ * "event generate $textWidget <<Modified>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Modified");
+ Tk_HandleEvent(&event);
+ }
+}
diff --git a/generic/tkText.h b/generic/tkText.h
index f89c18f..0b65e94 100644
--- a/generic/tkText.h
+++ b/generic/tkText.h
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkText.h,v 1.7 2000/01/06 02:18:58 hobbs Exp $
+ * RCS: @(#) $Id: tkText.h,v 1.7.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#ifndef _TKTEXT
@@ -451,6 +451,25 @@ typedef struct TkTextTabArray {
* BE THE LAST IN THE STRUCTURE. */
} TkTextTabArray;
+/* enum definining the types used in an edit stack */
+
+typedef enum {
+ TK_EDIT_SEPARATOR, /* Marker */
+ TK_EDIT_INSERT, /* The undo is an insert */
+ TK_EDIT_DELETE /* The undo is a delete */
+} TkTextEditType;
+
+/* strcut defining the basic undo/redo stack element */
+
+typedef struct TkTextEditAtom {
+ TkTextEditType type; /* The type that will trigger the
+ * required action*/
+ char * index; /* The starting index of the range */
+ char * string; /* The text to be inserted / deleted */
+ struct TkTextEditAtom * next; /* Pointer to the next element in the
+ * stack */
+} TkTextEditAtom;
+
/*
* A data structure of the following type is kept for each text widget that
* currently exists for this process:
@@ -604,7 +623,7 @@ typedef struct TkText {
/* Pointer to segment for "current" mark,
* or NULL if none. */
XEvent pickEvent; /* The event from which the current character
- * was chosen. Must be saved so that we
+ * was chosen. Must be saved so that we
* can repick after modifications to the
* text. */
int numCurTags; /* Number of tags associated with character
@@ -616,15 +635,43 @@ typedef struct TkText {
* Miscellaneous additional information:
*/
- char *takeFocus; /* Value of -takeFocus option; not used in
+ char *takeFocus; /* Value of -takeFocus option; not used in
* the C code, but used by keyboard traversal
* scripts. Malloc'ed, but may be NULL. */
char *xScrollCmd; /* Prefix of command to issue to update
* horizontal scrollbar when view changes. */
char *yScrollCmd; /* Prefix of command to issue to update
* vertical scrollbar when view changes. */
- int flags; /* Miscellaneous flags; see below for
+ int flags; /* Miscellaneous flags; see below for
* definitions. */
+
+ /*
+ * Information related to the undo/redo functonality
+ */
+
+ TkTextEditAtom * undoStack; /* The undo stack */
+
+ TkTextEditAtom * redoStack; /* The redo stack */
+
+ int undo; /* non zero means the undo/redo behaviour is
+ * enabled */
+
+ int autoSeparators; /* non zero means the separatorss will be
+ * inserted automatically */
+
+ int modifiedSet; /* Flag indicating that the 'dirtynesss' of
+ * the text widget has been expplicitly set.
+ */
+
+ int isDirty; /* Flag indicating the 'dirtynesss' of the text
+ * widget. If the flag is not zero, unsaved
+ * modifications have been applied to the
+ * text widget */
+
+ int isDirtyIncrement; /* Amount with which the isDirty flag is
+ * incremented every edit action
+ */
+
} TkText;
/*
@@ -787,7 +834,7 @@ EXTERN int TkTextDLineInfo _ANSI_ARGS_((TkText *textPtr,
TkTextIndex *indexPtr, int *xPtr, int *yPtr,
int *widthPtr, int *heightPtr, int *basePtr));
EXTERN TkTextTag * TkTextCreateTag _ANSI_ARGS_((TkText *textPtr,
- char *tagName));
+ CONST char *tagName));
EXTERN void TkTextFreeDInfo _ANSI_ARGS_((TkText *textPtr));
EXTERN void TkTextFreeTag _ANSI_ARGS_((TkText *textPtr,
TkTextTag *tagPtr));
diff --git a/generic/tkTextIndex.c b/generic/tkTextIndex.c
index 8376419..f24fe48 100644
--- a/generic/tkTextIndex.c
+++ b/generic/tkTextIndex.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkTextIndex.c,v 1.3 1999/04/16 01:51:24 stanton Exp $
+ * RCS: @(#) $Id: tkTextIndex.c,v 1.3.18.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "default.h"
@@ -64,7 +64,7 @@ TkTextMakeByteIndex(tree, lineIndex, byteIndex, indexPtr)
{
TkTextSegment *segPtr;
int index;
- char *p, *start;
+ CONST char *p, *start;
Tcl_UniChar ch;
indexPtr->tree = tree;
@@ -977,7 +977,7 @@ TkTextIndexBackChars(srcPtr, charCount, dstPtr)
{
TkTextSegment *segPtr, *oldPtr;
int lineIndex, segSize;
- char *p, *start, *end;
+ CONST char *p, *start, *end;
if (charCount <= 0) {
TkTextIndexForwChars(srcPtr, -charCount, dstPtr);
diff --git a/generic/tkTextTag.c b/generic/tkTextTag.c
index c126fcc..d043196 100644
--- a/generic/tkTextTag.c
+++ b/generic/tkTextTag.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkTextTag.c,v 1.5 2000/01/06 02:18:59 hobbs Exp $
+ * RCS: @(#) $Id: tkTextTag.c,v 1.5.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "default.h"
@@ -151,7 +151,7 @@ TkTextTagCmd(textPtr, interp, argc, argv)
index2 = index1;
TkTextIndexForwChars(&index2, 1, &index2);
}
-
+
if (tagPtr->affectsDisplay) {
TkTextRedrawTag(textPtr, &index1, &index2, tagPtr, !addTag);
} else {
@@ -159,18 +159,34 @@ TkTextTagCmd(textPtr, interp, argc, argv)
* Still need to trigger enter/leave events on tags that
* have changed.
*/
-
+
TkTextEventuallyRepick(textPtr);
}
TkBTreeTag(&index1, &index2, tagPtr, addTag);
-
+
/*
* If the tag is "sel" then grab the selection if we're supposed
* to export it and don't already have it. Also, invalidate
* partially-completed selection retrievals.
*/
-
+
if (tagPtr == textPtr->selTagPtr) {
+ XEvent event;
+ /*
+ * Send an event that the selection changed.
+ * This is equivalent to
+ * "event generate $textWidget <<Selection>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Selection");
+ Tk_HandleEvent(&event);
+
if (addTag && textPtr->exportSelection
&& !(textPtr->flags & GOT_SELECTION)) {
Tk_OwnSelection(textPtr->tkwin, XA_PRIMARY,
@@ -234,7 +250,7 @@ TkTextTagCmd(textPtr, interp, argc, argv)
command = Tk_GetBinding(interp, textPtr->bindingTable,
(ClientData) tagPtr, argv[4]);
if (command == NULL) {
- char *string = Tcl_GetStringResult(interp);
+ CONST char *string = Tcl_GetStringResult(interp);
/*
* Ignore missing binding errors. This is a special hack
@@ -462,6 +478,25 @@ TkTextTagCmd(textPtr, interp, argc, argv)
TkTextMakeByteIndex(textPtr->tree, TkBTreeNumLines(textPtr->tree),
0, &last),
TkBTreeTag(&first, &last, tagPtr, 0);
+
+ if (tagPtr == textPtr->selTagPtr) {
+ XEvent event;
+ /*
+ * Send an event that the selection changed.
+ * This is equivalent to
+ * "event generate $textWidget <<Selection>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Selection");
+ Tk_HandleEvent(&event);
+ }
+
Tcl_DeleteHashEntry(hPtr);
if (textPtr->bindingTable != NULL) {
Tk_DeleteAllBindings(textPtr->bindingTable,
@@ -769,7 +804,7 @@ TkTextTagCmd(textPtr, interp, argc, argv)
TkTextTag *
TkTextCreateTag(textPtr, tagName)
TkText *textPtr; /* Widget in which tag is being used. */
- char *tagName; /* Name of desired tag. */
+ CONST char *tagName; /* Name of desired tag. */
{
register TkTextTag *tagPtr;
Tcl_HashEntry *hPtr;
diff --git a/generic/tkWindow.c b/generic/tkWindow.c
index f0482e1..0101778 100644
--- a/generic/tkWindow.c
+++ b/generic/tkWindow.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWindow.c,v 1.39.2.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkWindow.c,v 1.39.2.3 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -206,7 +206,7 @@ static Tk_Window CreateTopLevelWindow _ANSI_ARGS_((Tcl_Interp *interp,
static void DeleteWindowsExitProc _ANSI_ARGS_((
ClientData clientData));
static TkDisplay * GetScreen _ANSI_ARGS_((Tcl_Interp *interp,
- char *screenName, int *screenPtr));
+ CONST char *screenName, int *screenPtr));
static int Initialize _ANSI_ARGS_((Tcl_Interp *interp));
static int NameWindow _ANSI_ARGS_((Tcl_Interp *interp,
TkWindow *winPtr, TkWindow *parentPtr,
@@ -356,12 +356,12 @@ CreateTopLevelWindow(interp, parent, name, screenName, flags)
static TkDisplay *
GetScreen(interp, screenName, screenPtr)
Tcl_Interp *interp; /* Place to leave error message. */
- char *screenName; /* Name for screen. NULL or empty means
+ CONST char *screenName; /* Name for screen. NULL or empty means
* use DISPLAY envariable. */
int *screenPtr; /* Where to store screen number. */
{
register TkDisplay *dispPtr;
- char *p;
+ CONST char *p;
int screenId;
size_t length;
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
@@ -2209,7 +2209,7 @@ Tk_SetClassProcs(tkwin, procs, instanceData)
Tk_Window
Tk_NameToWindow(interp, pathName, tkwin)
Tcl_Interp *interp; /* Where to report errors. */
- char *pathName; /* Path name of window. */
+ CONST char *pathName; /* Path name of window. */
Tk_Window tkwin; /* Token for window: name is assumed to
* belong to the same main window as tkwin. */
{
@@ -2571,6 +2571,11 @@ OpenIM(dispPtr)
#else
unsigned short i;
XIMStyles *stylePtr;
+ char *modifier_list;
+
+ if ((modifier_list = XSetLocaleModifiers("")) == NULL) {
+ goto error;
+ }
dispPtr->inputMethod = XOpenIM(dispPtr->display, NULL, NULL, NULL);
if (dispPtr->inputMethod == NULL) {
@@ -2825,7 +2830,9 @@ Initialize(interp)
{
char *p;
int argc, code;
- char **argv, *args[20];
+ CONST char **argv;
+ char *args[20];
+ CONST char *argString = NULL;
Tcl_DString class;
ThreadSpecificData *tsdPtr;
@@ -2935,7 +2942,7 @@ Initialize(interp)
* cross interp refcounting and changing the code below.
*/
- p = Tcl_GetStringResult(master);
+ argString = Tcl_GetStringResult(master);
} else {
/*
* If there is an "argv" variable, get its value, extract out
@@ -2943,13 +2950,13 @@ Initialize(interp)
* the arguments that we used.
*/
- p = Tcl_GetVar2(interp, "argv", (char *) NULL, TCL_GLOBAL_ONLY);
+ argString = Tcl_GetVar2(interp, "argv", (char *) NULL, TCL_GLOBAL_ONLY);
}
argv = NULL;
- if (p != NULL) {
+ if (argString != NULL) {
char buffer[TCL_INTEGER_SPACE];
- if (Tcl_SplitList(interp, p, &argc, &argv) != TCL_OK) {
+ if (Tcl_SplitList(interp, argString, &argc, &argv) != TCL_OK) {
argError:
Tcl_AddErrorInfo(interp,
"\n (processing arguments in argv variable)");