diff options
author | fvogel <fvogelnew1@free.fr> | 2016-05-18 10:14:33 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2016-05-18 10:14:33 (GMT) |
commit | 1c0858ce27408d641e6b3bb8f66e9b59cf630014 (patch) | |
tree | c0dc7bbe0c0f44ef9fe25376c27a5d029f49807e | |
parent | ac52dfb290b2def674a44dcdd9d2a5744f435ba8 (diff) | |
download | tk-1c0858ce27408d641e6b3bb8f66e9b59cf630014.zip tk-1c0858ce27408d641e6b3bb8f66e9b59cf630014.tar.gz tk-1c0858ce27408d641e6b3bb8f66e9b59cf630014.tar.bz2 |
Fixed [011706ec42] for the scrollbar case.bug_011706ec42
-rw-r--r-- | library/scrlbar.tcl | 11 | ||||
-rw-r--r-- | tests/scrollbar.test | 23 |
2 files changed, 29 insertions, 5 deletions
diff --git a/library/scrlbar.tcl b/library/scrlbar.tcl index b7be014..6f1caa2 100644 --- a/library/scrlbar.tcl +++ b/library/scrlbar.tcl @@ -430,6 +430,9 @@ proc ::tk::ScrollTopBottom {w x y} { proc ::tk::ScrollButton2Down {w x y} { variable ::tk::Priv + if {![winfo exists $w]} { + return + } set element [$w identify $x $y] if {[string match {arrow[12]} $element]} { ScrollButtonDown $w $x $y @@ -443,7 +446,9 @@ proc ::tk::ScrollButton2Down {w x y} { # slider drag. update idletasks - $w configure -activerelief sunken - $w activate slider - ScrollStartDrag $w $x $y + if {[winfo exists $w]} { + $w configure -activerelief sunken + $w activate slider + ScrollStartDrag $w $x $y + } } diff --git a/tests/scrollbar.test b/tests/scrollbar.test index 8f967ea..bd14067 100644 --- a/tests/scrollbar.test +++ b/tests/scrollbar.test @@ -669,8 +669,8 @@ test scrollbar-11.1 {bug fix: [011706ec42] Scrollbar unsafe wrt widget destructi } } toplevel .top - scrollbar .top.s -command destroy_scrollbar - bind .top.s <2> destroy_scrollbar + scrollbar .top.s + bind .top.s <2> {destroy_scrollbar} pack .top.s focus -force .top.s update @@ -679,6 +679,25 @@ test scrollbar-11.1 {bug fix: [011706ec42] Scrollbar unsafe wrt widget destructi } -cleanup { destroy .top.s .top } -result {} +test scrollbar-11.2 {bug fix: [011706ec42] Scrollbar unsafe wrt widget destruction} -body { + proc destroy_scrollbar {{y 0}} { + if {[winfo exists .top.s]} { + destroy .top.s + } + } + toplevel .top + wm minsize .top 50 400 + update + scrollbar .top.s + bind .top.s <2> {after idle destroy_scrollbar} + pack .top.s -expand true -fill y + focus -force .top.s + update + event generate .top.s <2> -x 2 -y [expr {[winfo height .top.s] / 2}] + update ; # shall not trigger error invalid command name ".top.s" +} -cleanup { + destroy .top.s .top +} -result {} catch {destroy .s} catch {destroy .t} |