Import Tk 8.6.11

This commit is contained in:
Steve Dower
2021-03-30 00:54:10 +01:00
parent 42c69189d9
commit 070b8750b0
403 changed files with 21608 additions and 16269 deletions

View File

@@ -517,7 +517,7 @@ ItemDisplay(
canvasPtr->display, pixmap, screenX1, screenY1, width, height);
}
static inline int
static int
ItemIndex(
TkCanvas *canvasPtr,
Tk_Item *itemPtr,
@@ -638,7 +638,7 @@ Tk_CanvasObjCmd(
int argc, /* Number of arguments. */
Tcl_Obj *const argv[]) /* Argument objects. */
{
Tk_Window tkwin = clientData;
Tk_Window tkwin = (Tk_Window)clientData;
TkCanvas *canvasPtr;
Tk_Window newWin;
@@ -662,7 +662,7 @@ Tk_CanvasObjCmd(
* pointers).
*/
canvasPtr = ckalloc(sizeof(TkCanvas));
canvasPtr = (TkCanvas *)ckalloc(sizeof(TkCanvas));
canvasPtr->tkwin = newWin;
canvasPtr->display = Tk_Display(newWin);
canvasPtr->interp = interp;
@@ -788,7 +788,7 @@ CanvasWidgetCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
TkCanvas *canvasPtr = clientData;
TkCanvas *canvasPtr = (TkCanvas *)clientData;
int c, result;
Tk_Item *itemPtr = NULL; /* Initialization needed only to prevent
* compiler warning. */
@@ -835,7 +835,7 @@ CanvasWidgetCmd(
Tcl_Preserve(canvasPtr);
result = TCL_OK;
switch ((enum options) index) {
switch ((enum options)index) {
case CANV_ADDTAG:
if (objc < 4) {
Tcl_WrongNumArgs(interp, 2, objv, "tag searchCommand ?arg ...?");
@@ -897,7 +897,7 @@ CanvasWidgetCmd(
break;
}
case CANV_BIND: {
ClientData object;
void *object;
if ((objc < 3) || (objc > 5)) {
Tcl_WrongNumArgs(interp, 2, objv, "tagOrId ?sequence? ?command?");
@@ -948,9 +948,9 @@ CanvasWidgetCmd(
Tcl_HashEntry *entryPtr;
entryPtr = Tcl_FindHashEntry(&canvasPtr->idTable,
(char *) INT2PTR(searchPtr->id));
INT2PTR(searchPtr->id));
if (entryPtr != NULL) {
itemPtr = Tcl_GetHashValue(entryPtr);
itemPtr = (Tk_Item *)Tcl_GetHashValue(entryPtr);
object = itemPtr;
}
@@ -977,7 +977,7 @@ CanvasWidgetCmd(
if (objc == 5) {
int append = 0;
unsigned long mask;
unsigned int mask;
const char *argv4 = Tcl_GetString(objv[4]);
if (argv4[0] == 0) {
@@ -1027,7 +1027,7 @@ CanvasWidgetCmd(
result = TCL_ERROR;
goto done;
}
if (mask & ~(unsigned long)(ButtonMotionMask|Button1MotionMask
if (mask & ~(ButtonMotionMask|Button1MotionMask
|Button2MotionMask|Button3MotionMask|Button4MotionMask
|Button5MotionMask|ButtonPressMask|ButtonReleaseMask
|EnterWindowMask|LeaveWindowMask|KeyPressMask
@@ -1185,7 +1185,6 @@ CanvasWidgetCmd(
tmpObj = Tcl_NewListObj(2, objv+4);
FOR_EVERY_CANVAS_ITEM_MATCHING(objv[2], &searchPtr, goto doneImove) {
int index;
int x1, x2, y1, y2;
int dontRedraw1, dontRedraw2;
@@ -1238,7 +1237,6 @@ CanvasWidgetCmd(
case CANV_CREATE: {
Tk_ItemType *typePtr;
Tk_ItemType *matchPtr = NULL;
Tk_Item *itemPtr;
int isNew = 0;
Tcl_HashEntry *entryPtr;
const char *arg;
@@ -1297,9 +1295,8 @@ CanvasWidgetCmd(
}
typePtr = matchPtr;
itemPtr = ckalloc(typePtr->itemSize);
itemPtr->id = canvasPtr->nextId;
canvasPtr->nextId++;
itemPtr = (Tk_Item *)ckalloc(typePtr->itemSize);
itemPtr->id = canvasPtr->nextId++;
itemPtr->tagPtr = itemPtr->staticTagSpace;
itemPtr->tagSpace = TK_TAG_SPACE;
itemPtr->numTags = 0;
@@ -1315,7 +1312,7 @@ CanvasWidgetCmd(
itemPtr->nextPtr = NULL;
entryPtr = Tcl_CreateHashEntry(&canvasPtr->idTable,
(char *) INT2PTR(itemPtr->id), &isNew);
INT2PTR(itemPtr->id), &isNew);
Tcl_SetHashValue(entryPtr, itemPtr);
itemPtr->prevPtr = canvasPtr->lastItemPtr;
canvasPtr->hotPtr = itemPtr;
@@ -1394,7 +1391,7 @@ CanvasWidgetCmd(
ckfree(itemPtr->tagPtr);
}
entryPtr = Tcl_FindHashEntry(&canvasPtr->idTable,
(char *) INT2PTR(itemPtr->id));
INT2PTR(itemPtr->id));
Tcl_DeleteHashEntry(entryPtr);
if (itemPtr->nextPtr != NULL) {
itemPtr->nextPtr->prevPtr = itemPtr->prevPtr;
@@ -1451,9 +1448,22 @@ CanvasWidgetCmd(
FOR_EVERY_CANVAS_ITEM_MATCHING(objv[2], &searchPtr, goto done) {
for (i = itemPtr->numTags-1; i >= 0; i--) {
if (itemPtr->tagPtr[i] == tag) {
itemPtr->tagPtr[i] = itemPtr->tagPtr[itemPtr->numTags-1];
/*
* Don't shuffle the tags sequence: memmove the tags.
*/
memmove((void *)(itemPtr->tagPtr + i),
itemPtr->tagPtr + i + 1,
(itemPtr->numTags - (i+1)) * sizeof(Tk_Uid));
itemPtr->numTags--;
}
/*
* There must be no break here: all tags with the same name must
* be deleted.
*/
}
}
}
break;
@@ -1518,7 +1528,6 @@ CanvasWidgetCmd(
}
break;
case CANV_ICURSOR: {
int index;
if (objc != 4) {
Tcl_WrongNumArgs(interp, 2, objv, "tagOrId index");
@@ -1543,7 +1552,6 @@ CanvasWidgetCmd(
break;
}
case CANV_INDEX: {
int index;
if (objc != 4) {
Tcl_WrongNumArgs(interp, 2, objv, "tagOrId string");
@@ -1643,7 +1651,6 @@ CanvasWidgetCmd(
}
break;
case CANV_LOWER: {
Tk_Item *itemPtr;
if ((objc != 3) && (objc != 4)) {
Tcl_WrongNumArgs(interp, 2, objv, "tagOrId ?belowThis?");
@@ -1928,7 +1935,7 @@ CanvasWidgetCmd(
break;
}
case CANV_SELECT: {
int index, optionindex;
int optionindex;
static const char *const optionStrings[] = {
"adjust", "clear", "from", "item", "to", NULL
};
@@ -2400,7 +2407,7 @@ static void
CanvasWorldChanged(
ClientData instanceData) /* Information about widget. */
{
TkCanvas *canvasPtr = instanceData;
TkCanvas *canvasPtr = (TkCanvas *)instanceData;
Tk_Item *itemPtr;
itemPtr = canvasPtr->firstItemPtr;
@@ -2438,7 +2445,7 @@ static void
DisplayCanvas(
ClientData clientData) /* Information about widget. */
{
TkCanvas *canvasPtr = clientData;
TkCanvas *canvasPtr = (TkCanvas *)clientData;
Tk_Window tkwin = canvasPtr->tkwin;
Tk_Item *itemPtr;
Pixmap pixmap;
@@ -2692,7 +2699,7 @@ CanvasEventProc(
ClientData clientData, /* Information about window. */
XEvent *eventPtr) /* Information about event. */
{
TkCanvas *canvasPtr = clientData;
TkCanvas *canvasPtr = (TkCanvas *)clientData;
if (eventPtr->type == Expose) {
int x, y;
@@ -2782,7 +2789,7 @@ static void
CanvasCmdDeletedProc(
ClientData clientData) /* Pointer to widget record for widget. */
{
TkCanvas *canvasPtr = clientData;
TkCanvas *canvasPtr = (TkCanvas *)clientData;
Tk_Window tkwin = canvasPtr->tkwin;
/*
@@ -3274,7 +3281,7 @@ NextItem(
static SearchUids *
GetStaticUids(void)
{
SearchUids *searchUids =
SearchUids *searchUids = (SearchUids *)
Tcl_GetThreadData(&dataKey, sizeof(SearchUids));
if (searchUids->allUid == NULL) {
@@ -3313,7 +3320,7 @@ TagSearchExprInit(
TagSearchExpr *expr = *exprPtrPtr;
if (expr == NULL) {
expr = ckalloc(sizeof(TagSearchExpr));
expr = (TagSearchExpr *)ckalloc(sizeof(TagSearchExpr));
expr->allocated = 0;
expr->uids = NULL;
expr->next = NULL;
@@ -3394,7 +3401,7 @@ TagSearchScan(
* Allocate primary search struct on first call.
*/
*searchPtrPtr = searchPtr = ckalloc(sizeof(TagSearch));
*searchPtrPtr = searchPtr = (TagSearch *)ckalloc(sizeof(TagSearch));
searchPtr->expr = NULL;
/*
@@ -3402,7 +3409,7 @@ TagSearchScan(
*/
searchPtr->rewritebufferAllocated = 100;
searchPtr->rewritebuffer = ckalloc(searchPtr->rewritebufferAllocated);
searchPtr->rewritebuffer = (char *)ckalloc(searchPtr->rewritebufferAllocated);
}
TagSearchExprInit(&searchPtr->expr);
@@ -3419,7 +3426,7 @@ TagSearchScan(
if ((unsigned) searchPtr->stringLength >=
searchPtr->rewritebufferAllocated) {
searchPtr->rewritebufferAllocated = searchPtr->stringLength + 100;
searchPtr->rewritebuffer =
searchPtr->rewritebuffer = (char *)
ckrealloc(searchPtr->rewritebuffer,
searchPtr->rewritebufferAllocated);
}
@@ -3602,10 +3609,10 @@ TagSearchScanExpr(
if (expr->index >= expr->allocated-1) {
expr->allocated += 15;
if (expr->uids) {
expr->uids = ckrealloc(expr->uids,
expr->uids = (Tk_Uid *)ckrealloc(expr->uids,
expr->allocated * sizeof(Tk_Uid));
} else {
expr->uids = ckalloc(expr->allocated * sizeof(Tk_Uid));
expr->uids = (Tk_Uid *)ckalloc(expr->allocated * sizeof(Tk_Uid));
}
}
@@ -4015,9 +4022,9 @@ TagSearchFirst(
if ((itemPtr == NULL) || (itemPtr->id != searchPtr->id)
|| (lastPtr == NULL) || (lastPtr->nextPtr != itemPtr)) {
entryPtr = Tcl_FindHashEntry(&searchPtr->canvasPtr->idTable,
(char *) INT2PTR(searchPtr->id));
INT2PTR(searchPtr->id));
if (entryPtr != NULL) {
itemPtr = Tcl_GetHashValue(entryPtr);
itemPtr = (Tk_Item *)Tcl_GetHashValue(entryPtr);
lastPtr = itemPtr->prevPtr;
} else {
lastPtr = itemPtr = NULL;
@@ -4236,7 +4243,7 @@ DoItem(
Tk_Uid *newTagPtr;
itemPtr->tagSpace += 5;
newTagPtr = ckalloc(itemPtr->tagSpace * sizeof(Tk_Uid));
newTagPtr = (Tk_Uid *)ckalloc(itemPtr->tagSpace * sizeof(Tk_Uid));
memcpy((void *) newTagPtr, itemPtr->tagPtr,
itemPtr->numTags * sizeof(Tk_Uid));
if (itemPtr->tagPtr != itemPtr->staticTagSpace) {
@@ -4746,8 +4753,8 @@ CanvasBindProc(
ClientData clientData, /* Pointer to canvas structure. */
XEvent *eventPtr) /* Pointer to X event that just happened. */
{
TkCanvas *canvasPtr = clientData;
unsigned long mask;
TkCanvas *canvasPtr = (TkCanvas *)clientData;
unsigned mask;
Tcl_Preserve(canvasPtr);
@@ -4843,7 +4850,7 @@ PickCurrentItem(
* ButtonRelease, or MotionNotify. */
{
double coords[2];
unsigned long buttonDown;
unsigned int buttonDown;
Tk_Item *prevItemPtr;
#ifndef USE_OLD_TAG_SEARCH
SearchUids *searchUids = GetStaticUids();
@@ -4975,7 +4982,9 @@ PickCurrentItem(
if (itemPtr->tagPtr[i] == searchUids->currentUid)
#endif /* USE_OLD_TAG_SEARCH */
/* then */ {
itemPtr->tagPtr[i] = itemPtr->tagPtr[itemPtr->numTags-1];
memmove((void *)(itemPtr->tagPtr + i),
itemPtr->tagPtr + i + 1,
(itemPtr->numTags - (i+1)) * sizeof(Tk_Uid));
itemPtr->numTags--;
break;
}
@@ -5108,8 +5117,8 @@ CanvasDoEvent(
* processed. */
{
#define NUM_STATIC 3
ClientData staticObjects[NUM_STATIC];
ClientData *objectPtr;
void *staticObjects[NUM_STATIC];
void **objectPtr;
int numObjects, i;
Tk_Item *itemPtr;
#ifndef USE_OLD_TAG_SEARCH
@@ -5235,7 +5244,7 @@ static void
CanvasBlinkProc(
ClientData clientData) /* Pointer to record describing entry. */
{
TkCanvas *canvasPtr = clientData;
TkCanvas *canvasPtr = (TkCanvas *)clientData;
if (!canvasPtr->textInfo.gotFocus || (canvasPtr->insertOffTime == 0)) {
return;
@@ -5391,7 +5400,7 @@ CanvasFetchSelection(
* not including terminating NULL
* character. */
{
TkCanvas *canvasPtr = clientData;
TkCanvas *canvasPtr = (TkCanvas *)clientData;
return ItemSelection(canvasPtr, canvasPtr->textInfo.selItemPtr, offset,
buffer, maxBytes);
@@ -5419,7 +5428,7 @@ static void
CanvasLostSelection(
ClientData clientData) /* Information about entry widget. */
{
TkCanvas *canvasPtr = clientData;
TkCanvas *canvasPtr = (TkCanvas *)clientData;
EventuallyRedrawItem(canvasPtr, canvasPtr->textInfo.selItemPtr);
canvasPtr->textInfo.selItemPtr = NULL;
@@ -5541,8 +5550,8 @@ CanvasUpdateScrollbars(
Tcl_DString buf;
/*
* Save all the relevant values from the canvasPtr, because it might be
* deleted as part of either of the two calls to Tcl_VarEval below.
* Preserve the relevant values from the canvasPtr, because it might be
* deleted as part of either of the two calls to Tcl_EvalEx below.
*/
interp = canvasPtr->interp;
@@ -5573,7 +5582,7 @@ CanvasUpdateScrollbars(
Tcl_DStringAppend(&buf, xScrollCmd, -1);
Tcl_DStringAppend(&buf, " ", -1);
Tcl_DStringAppend(&buf, Tcl_GetString(fractions), -1);
result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, TCL_EVAL_GLOBAL);
Tcl_DStringFree(&buf);
Tcl_DecrRefCount(fractions);
if (result != TCL_OK) {
@@ -5591,7 +5600,7 @@ CanvasUpdateScrollbars(
Tcl_DStringAppend(&buf, yScrollCmd, -1);
Tcl_DStringAppend(&buf, " ", -1);
Tcl_DStringAppend(&buf, Tcl_GetString(fractions), -1);
result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, 0);
result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), -1, TCL_EVAL_GLOBAL);
Tcl_DStringFree(&buf);
Tcl_DecrRefCount(fractions);
if (result != TCL_OK) {
@@ -5748,19 +5757,18 @@ CanvasSetOrigin(
*----------------------------------------------------------------------
*/
/* ARGSUSED */
static const char **
TkGetStringsFromObjs(
int objc,
Tcl_Obj *const objv[])
{
register int i;
int i;
const char **argv;
if (objc <= 0) {
return NULL;
}
argv = ckalloc((objc+1) * sizeof(char *));
argv = (const char **)ckalloc((objc+1) * sizeof(char *));
for (i = 0; i < objc; i++) {
argv[i] = Tcl_GetString(objv[i]);
}