Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | One last review of tkCmds.c, making sure that there is no single mistake in it. Found one unnecessary IncrRefCount/DecrRefcount, some unneeded type cast and a few more cleanups, all already fixed in Tk 8.6. So better backport that too. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-5-branch |
Files: | files | file ages | folders |
SHA1: |
5f0e58d13226f9f64ae1c37c8c1f4dad |
User & Date: | jan.nijtmans 2013-03-29 08:46:17 |
Context
2013-04-01
| ||
17:12 | 3607830 Runtime checks that Xkb is available in the X server before trying to use. Adapted from patch from Brian Griffin. check-in: 9b8bdc81 user: dgp tags: core-8-5-branch | |
17:07 | Merge 8.5. Bring together the compile time and run time Xkb checks. Closed-Leaf check-in: e8eed931 user: dgp tags: bug-3607830 | |
2013-03-30
| ||
06:47 | merge-mark check-in: 4dea541f user: jan.nijtmans tags: core-8-5-14rc | |
2013-03-29
| ||
08:47 | merge-mark check-in: 7b36f483 user: jan.nijtmans tags: trunk | |
08:46 | One last review of tkCmds.c, making sure that there is no single mistake in it. Found one unnecessary IncrRefCount/DecrRefcount, some unneeded type cast and a few more cleanups, all already fixed in Tk 8.6. So better backport that too. check-in: 5f0e58d1 user: jan.nijtmans tags: core-8-5-branch | |
2013-03-28
| ||
07:36 | Easier solution, with proper protection and configure warnings. check-in: 6af7f840 user: jan.nijtmans tags: core-8-5-branch | |
Changes
Changes to generic/tkCmds.c.
︙ | ︙ | |||
232 233 234 235 236 237 238 | TkWindow *winPtr, /* Pointer to info about window. */ XEvent *eventPtr) /* Information about event. */ { #define MAX_OBJS 20 ClientData objects[MAX_OBJS], *objPtr; TkWindow *topLevPtr; int i, count; | | | | 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 | TkWindow *winPtr, /* Pointer to info about window. */ XEvent *eventPtr) /* Information about event. */ { #define MAX_OBJS 20 ClientData objects[MAX_OBJS], *objPtr; TkWindow *topLevPtr; int i, count; const char *p; Tcl_HashEntry *hPtr; if ((winPtr->mainPtr == NULL) || (winPtr->mainPtr->bindingTable == NULL)) { return; } objPtr = objects; if (winPtr->numTags != 0) { /* * Make a copy of the tags for the window, replacing window names with * pointers to the pathName from the appropriate window. */ if (winPtr->numTags > MAX_OBJS) { objPtr = (ClientData *) ckalloc((unsigned) (winPtr->numTags * sizeof(ClientData))); } for (i = 0; i < winPtr->numTags; i++) { p = winPtr->tagPtr[i]; if (*p == '.') { hPtr = Tcl_FindHashEntry(&winPtr->mainPtr->nameTable, p); if (hPtr != NULL) { p = ((TkWindow *) Tcl_GetHashValue(hPtr))->pathName; } else { p = NULL; } |
︙ | ︙ | |||
327 328 329 330 331 332 333 | winPtr = (TkWindow *) Tk_NameToWindow(interp, Tcl_GetString(objv[1]), tkwin); if (winPtr == NULL) { return TCL_ERROR; } if (objc == 2) { listPtr = Tcl_NewObj(); | < | 327 328 329 330 331 332 333 334 335 336 337 338 339 340 | winPtr = (TkWindow *) Tk_NameToWindow(interp, Tcl_GetString(objv[1]), tkwin); if (winPtr == NULL) { return TCL_ERROR; } if (objc == 2) { listPtr = Tcl_NewObj(); if (winPtr->numTags == 0) { Tcl_ListObjAppendElement(interp, listPtr, Tcl_NewStringObj(winPtr->pathName, -1)); Tcl_ListObjAppendElement(interp, listPtr, Tcl_NewStringObj(winPtr->classUid, -1)); winPtr2 = winPtr; while ((winPtr2 != NULL) && !(Tk_TopWinHierarchy(winPtr2))) { |
︙ | ︙ | |||
350 351 352 353 354 355 356 | } else { for (i = 0; i < winPtr->numTags; i++) { Tcl_ListObjAppendElement(interp, listPtr, Tcl_NewStringObj((char *)winPtr->tagPtr[i], -1)); } } Tcl_SetObjResult(interp, listPtr); | < | 349 350 351 352 353 354 355 356 357 358 359 360 361 362 | } else { for (i = 0; i < winPtr->numTags; i++) { Tcl_ListObjAppendElement(interp, listPtr, Tcl_NewStringObj((char *)winPtr->tagPtr[i], -1)); } } Tcl_SetObjResult(interp, listPtr); return TCL_OK; } if (winPtr->tagPtr != NULL) { TkFreeBindingTags(winPtr); } if (Tcl_ListObjGetElements(interp, objv[2], &length, &tags) != TCL_OK) { return TCL_ERROR; |
︙ | ︙ | |||
411 412 413 414 415 416 417 | */ void TkFreeBindingTags( TkWindow *winPtr) /* Window whose tags are to be released. */ { int i; | | | | 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 | */ void TkFreeBindingTags( TkWindow *winPtr) /* Window whose tags are to be released. */ { int i; const char *p; for (i = 0; i < winPtr->numTags; i++) { p = winPtr->tagPtr[i]; if (*p == '.') { /* * Names starting with "." are malloced rather than Uids, so they * have to be freed. */ ckfree(p); |
︙ | ︙ | |||
1055 1056 1057 1058 1059 1060 1061 | ClientData clientData, /* Pointer to integer to set to 1. */ XEvent *eventPtr) /* Information about event (not used). */ { int *donePtr = (int *) clientData; if (eventPtr->type == VisibilityNotify) { *donePtr = 1; | < | | 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 | ClientData clientData, /* Pointer to integer to set to 1. */ XEvent *eventPtr) /* Information about event (not used). */ { int *donePtr = (int *) clientData; if (eventPtr->type == VisibilityNotify) { *donePtr = 1; } else if (eventPtr->type == DestroyNotify) { *donePtr = 2; } } static void WaitWindowProc( ClientData clientData, /* Pointer to integer to set to 1. */ |
︙ | ︙ | |||
1551 1552 1553 1554 1555 1556 1557 | return TCL_ERROR; } tkwin = Tk_CoordsToWindow(x, y, tkwin); if (tkwin != NULL) { Tcl_SetStringObj(resultPtr, Tk_PathName(tkwin), -1); } break; | | < < | < < | 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 | return TCL_ERROR; } tkwin = Tk_CoordsToWindow(x, y, tkwin); if (tkwin != NULL) { Tcl_SetStringObj(resultPtr, Tk_PathName(tkwin), -1); } break; case WIN_INTERPS: skip = TkGetDisplayOf(interp, objc - 2, objv + 2, &tkwin); if (skip < 0) { return TCL_ERROR; } if (objc - skip != 2) { Tcl_WrongNumArgs(interp, 2, objv, "?-displayof window?"); return TCL_ERROR; } return TkGetInterpNames(interp, tkwin); case WIN_PATHNAME: { Window id; skip = TkGetDisplayOf(interp, objc - 2, objv + 2, &tkwin); if (skip < 0) { return TCL_ERROR; } |
︙ | ︙ |