Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch bug-40e4bf6198 Excluding Merge-Ins
This is equivalent to a diff from 8979273e to 6b31402c
2020-07-06
| ||
21:12 | Fix [40e4bf6198]: Entry/spinbox: double free when textvariable set in validatecommand script. check-in: de3c5d23 user: fvogel tags: core-8-6-branch | |
2020-07-05
| ||
20:04 | Add test spinbox-19.21 testing for a spinbox the same thing entry-19.21 does for an entry widget. Closed-Leaf check-in: 6b31402c user: fvogel tags: bug-40e4bf6198 | |
20:01 | Bring entry-19.19 and spinbox-19.19 in line with the fix for [40e4bf6198]. Validation is now aborted earlier (and more correctly) when a validation loop is detected, therefore the widget content does no longer change in the process. check-in: 8b74f4d5 user: fvogel tags: bug-40e4bf6198 | |
2020-06-19
| ||
14:56 | Use XK_Oslash in stead of XK_Ooblique, since that's the official X11 name now. check-in: 78a7a93f user: jan.nijtmans tags: core-8-6-branch | |
2020-06-16
| ||
22:05 | Add test cases exercising [50ed1eddb0]: ttk::spinbox with -values does not loop through all values. These tests are curently duly failing. check-in: 5286f1fe user: fvogel tags: bug-50ed1eddb0 | |
2020-06-14
| ||
21:34 | Fix [40e4bf6198]: Entry: double free when textvariable set in validatecommand script check-in: d9ce9e56 user: fvogel tags: bug-40e4bf6198 | |
2020-06-12
| ||
14:52 | Merge 8.6 check-in: dad169a0 user: jan.nijtmans tags: trunk | |
14:47 | sync tcl.m4 and rules.vc with Tcl check-in: 8979273e user: jan.nijtmans tags: core-8-6-branch | |
13:52 | Fix [d908f43d17]: RFE: Travis: mac os x versions check-in: f2e65756 user: jan.nijtmans tags: core-8-6-branch | |
Changes to generic/tkEntry.c.
︙ | ︙ | |||
3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 | { int code, varValidate = (entryPtr->flags & VALIDATE_VAR); char *p; Tcl_DString script; if (entryPtr->validateCmd == NULL || entryPtr->validate == VALIDATE_NONE) { return (varValidate ? TCL_ERROR : TCL_OK); } /* | > > > | | | > | 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 | { int code, varValidate = (entryPtr->flags & VALIDATE_VAR); char *p; Tcl_DString script; if (entryPtr->validateCmd == NULL || entryPtr->validate == VALIDATE_NONE) { if (entryPtr->flags & VALIDATING) { entryPtr->flags |= VALIDATE_ABORT; } return (varValidate ? TCL_ERROR : TCL_OK); } /* * If we're already validating, then we're hitting a loop condition. Set * validate to none to disallow further validations, arrange for flags * to prevent current validation from finishing, and return. */ if (entryPtr->flags & VALIDATING) { entryPtr->validate = VALIDATE_NONE; entryPtr->flags |= VALIDATE_ABORT; return (varValidate ? TCL_ERROR : TCL_OK); } entryPtr->flags |= VALIDATING; /* * Now form command string and run through the -validatecommand |
︙ | ︙ |
Changes to tests/entry.test.
︙ | ︙ | |||
3354 3355 3356 3357 3358 3359 3360 | set ::e nextdata ;# previous settings .e configure -validatecommand [list doval2 %W %d %i %P %s %S %v %V] .e validate list [.e cget -validate] [.e get] $::vVals } -cleanup { destroy .e | | | 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 | set ::e nextdata ;# previous settings .e configure -validatecommand [list doval2 %W %d %i %P %s %S %v %V] .e validate list [.e cget -validate] [.e get] $::vVals } -cleanup { destroy .e } -result {none nextdata {.e -1 -1 nextdata nextdata {} all forced}} ## This leaves validate alone because we trigger validation through the ## textvar (a write trace), and the write during validation triggers ## nothing (by definition of avoiding loops on var traces). This is ## one of those "dangerous" conditions where the user will have a ## different value in the entry widget shown as is in the textvar. test entry-19.20 {entry widget validation} -setup { |
︙ | ︙ | |||
3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 | .e configure -validate all set ::e testdata list [.e cget -validate] [.e get] $::e $::vVals } -cleanup { destroy .e } -result {all testdata mydata {.e -1 -1 testdata mydata {} all forced}} ## ## End validation tests ## test entry-20.1 {widget deletion while active} -body { entry .e -validate all \ -validatecommand { destroy %W ; return 1 } \ | > > > > > > > > > > > > > > > > > > > > | 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 | .e configure -validate all set ::e testdata list [.e cget -validate] [.e get] $::e $::vVals } -cleanup { destroy .e } -result {all testdata mydata {.e -1 -1 testdata mydata {} all forced}} ## This leaves validate alone because we trigger validation through the ## textvar (a write trace), and the write during validation triggers ## nothing (by definition of avoiding loops on var traces). This is ## one of those "dangerous" conditions where the user will have a ## different value in the entry widget shown as is in the textvar. test entry-19.21 {entry widget validation - bug 40e4bf6198} -setup { unset -nocomplain ::e ::vVals } -body { entry .e -validate key \ -validatecommand [list doval2 %W %d %i %P %s %S %v %V] \ -textvariable ::e pack .e set ::e origdata .e insert 0 A list [.e cget -validate] [.e get] $::e $::vVals } -cleanup { destroy .e } -result {none origdata mydata {.e 1 0 Aorigdata origdata A key key}} ## ## End validation tests ## test entry-20.1 {widget deletion while active} -body { entry .e -validate all \ -validatecommand { destroy %W ; return 1 } \ |
︙ | ︙ |
Changes to tests/spinbox.test.
︙ | ︙ | |||
3590 3591 3592 3593 3594 3595 3596 | set ::e nextdata ;# previous settings .e configure -validatecommand [list doval2 %W %d %i %P %s %S %v %V] .e validate list [.e cget -validate] [.e get] $::vVals } -cleanup { destroy .e | | | 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 | set ::e nextdata ;# previous settings .e configure -validatecommand [list doval2 %W %d %i %P %s %S %v %V] .e validate list [.e cget -validate] [.e get] $::vVals } -cleanup { destroy .e } -result {none nextdata {.e -1 -1 nextdata nextdata {} all forced}} ## This leaves validate alone because we trigger validation through the ## textvar (a write trace), and the write during validation triggers ## nothing (by definition of avoiding loops on var traces). This is ## one of those "dangerous" conditions where the user will have a ## different value in the spinbox widget shown as is in the textvar. test spinbox-19.20 {spinbox widget validation} -setup { |
︙ | ︙ | |||
3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 | .e configure -validate all set ::e testdata list [.e cget -validate] [.e get] $::e $::vVals } -cleanup { destroy .e } -result {all testdata mydata {.e -1 -1 testdata mydata {} all forced}} ## ## End validation tests ## test spinbox-20.1 {spinbox config, -format specifier} -body { spinbox .e .e config -format %2f | > > > > > > > > > > > > > > > > > > > > | 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 | .e configure -validate all set ::e testdata list [.e cget -validate] [.e get] $::e $::vVals } -cleanup { destroy .e } -result {all testdata mydata {.e -1 -1 testdata mydata {} all forced}} ## This leaves validate alone because we trigger validation through the ## textvar (a write trace), and the write during validation triggers ## nothing (by definition of avoiding loops on var traces). This is ## one of those "dangerous" conditions where the user will have a ## different value in the entry widget shown as is in the textvar. test spinbox-19.21 {spinbox widget validation - bug 40e4bf6198} -setup { unset -nocomplain ::e ::vVals } -body { spinbox .e -validate key \ -validatecommand [list doval2 %W %d %i %P %s %S %v %V] \ -textvariable ::e pack .e set ::e origdata .e insert 0 A list [.e cget -validate] [.e get] $::e $::vVals } -cleanup { destroy .e } -result {none origdata mydata {.e 1 0 Aorigdata origdata A key key}} ## ## End validation tests ## test spinbox-20.1 {spinbox config, -format specifier} -body { spinbox .e .e config -format %2f |
︙ | ︙ |