Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Tests and fix for similar issues in [menu]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | bug-5d991b822e |
Files: | files | file ages | folders |
SHA3-256: |
c69b1cc45e71edfee6cf6ec4d9699d72 |
User & Date: | dgp 2019-05-15 18:05:47.734 |
Context
2019-05-15
| ||
19:33 | Revised bug fix for [5d991b822e]. check-in: afbac00c user: dgp tags: core-8-6-branch | |
18:05 | Tests and fix for similar issues in [menu]. Closed-Leaf check-in: c69b1cc4 user: dgp tags: bug-5d991b822e | |
17:30 | Tests and fix for [scale ... -variable]. check-in: c1dd2ab0 user: dgp tags: bug-5d991b822e | |
Changes
Changes to generic/tkMenu.c.
︙ | ︙ | |||
2482 2483 2484 2485 2486 2487 2488 | int flags) /* Describes what just happened. */ { TkMenuEntry *mePtr = clientData; TkMenu *menuPtr; const char *value; const char *name, *onValue; | | | > > | > | | | > > | > > > > > > > > > > > > > | 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 | int flags) /* Describes what just happened. */ { TkMenuEntry *mePtr = clientData; TkMenu *menuPtr; const char *value; const char *name, *onValue; if (Tcl_InterpDeleted(interp) || (mePtr->namePtr == NULL)) { /* * Do nothing if the interpreter is going away or we have * no variable name. */ return NULL; } menuPtr = mePtr->menuPtr; if (menuPtr->menuFlags & MENU_DELETION_PENDING) { return NULL; } name = Tcl_GetString(mePtr->namePtr); /* * If the variable is being unset, then re-establish the trace. */ if (flags & TCL_TRACE_UNSETS) { ClientData probe = NULL; mePtr->entryFlags &= ~ENTRY_SELECTED; do { probe = Tcl_VarTraceInfo(interp, name, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuVarProc, probe); if (probe == (ClientData)mePtr) { break; } } while (probe); if (probe) { /* * We were able to fetch the unset trace for our * namePtr, which means it is not unset and not * the cause of this unset trace. Instead some outdated * former variable must be, and we should ignore it. */ return NULL; } Tcl_TraceVar2(interp, name, NULL, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuVarProc, clientData); TkpConfigureMenuEntry(mePtr); TkEventuallyRedrawMenu(menuPtr, NULL); return NULL; } /* * Use the value of the variable to update the selected status of the menu |
︙ | ︙ |
Changes to generic/tkScale.c.
︙ | ︙ | |||
1194 1195 1196 1197 1198 1199 1200 | /* * If the variable is unset, then immediately recreate it unless the whole * interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { | < | 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 | /* * If the variable is unset, then immediately recreate it unless the whole * interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { if (!Tcl_InterpDeleted(interp) && scalePtr->varNamePtr) { ClientData probe = NULL; do { probe = Tcl_VarTraceInfo(interp, Tcl_GetString(scalePtr->varNamePtr), TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, |
︙ | ︙ |
Changes to tests/menu.test.
︙ | ︙ | |||
3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 | menu .m1 set foo "hello" list [.m1 add checkbutton -variable foo -onvalue hello -offvalue goodbye] \ [set foo "goodbye"] [unset foo] } -cleanup { deleteWindows } -result {{} goodbye {}} test menu-18.1 {TkActivateMenuEntry} -setup { deleteWindows } -body { menu .m1 .m1 add command -label "test" | > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 | menu .m1 set foo "hello" list [.m1 add checkbutton -variable foo -onvalue hello -offvalue goodbye] \ [set foo "goodbye"] [unset foo] } -cleanup { deleteWindows } -result {{} goodbye {}} test menu-17.6 {MenuVarProc [5d991b822e]} -setup { deleteWindows } -body { # Want this not to crash menu .b set var INIT .b add checkbutton -variable var trace add variable var unset {apply {args { .b entryconfigure 1 -variable {} }}} unset var } -cleanup { deleteWindows } -result {} test menu-17.7 {MenuVarProc [5d991b822e]} -setup { deleteWindows } -body { # Want this not to duplicate traces menu .b set var INIT .b add checkbutton -variable var trace add variable var unset {apply {args { .b entryconfigure 1 -variable new }}} unset var } -cleanup { deleteWindows } -result {} test menu-18.1 {TkActivateMenuEntry} -setup { deleteWindows } -body { menu .m1 .m1 add command -label "test" |
︙ | ︙ |