From d95284c405fba9c6f6222e1af119f5ba73b4443a Mon Sep 17 00:00:00 2001 From: fvogel Date: Wed, 10 Apr 2019 19:50:53 +0000 Subject: Fix [368fa4561e]: ttk::treeview open/closed indicators can be toggled while hidden --- library/ttk/treeview.tcl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/library/ttk/treeview.tcl b/library/ttk/treeview.tcl index 1ed87db..6a6f5d4 100644 --- a/library/ttk/treeview.tcl +++ b/library/ttk/treeview.tcl @@ -336,6 +336,12 @@ proc ttk::treeview::CloseItem {w item} { ## Toggle -- toggle opened/closed state of item # proc ttk::treeview::Toggle {w item} { + # don't allow toggling on indicators that + # are not present in front of leaf items + if {[$w children $item] == {}} { + return + } + # not a leaf, toggle! if {[$w item $item -open]} { CloseItem $w $item } else { -- cgit v0.12 From 3a81c1fb68b1e2b976651df7359209916ea5be63 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sat, 13 Apr 2019 16:44:20 +0000 Subject: Add test treeview-368fa4561e checking for non-regression regarding [368fa4561e] --- tests/ttk/treeview.test | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/ttk/treeview.test b/tests/ttk/treeview.test index aa7e64a..be82f68 100644 --- a/tests/ttk/treeview.test +++ b/tests/ttk/treeview.test @@ -636,4 +636,21 @@ test treeview-3085489-2 "tag remove, no -tags" -setup { destroy .tv } -result [list] +test treeview-368fa4561e "indicators cannot be clicked on leafs" -setup { + pack [ttk::treeview .tv] + .tv insert {} end -id foo -text "<-- (1) Click the blank space to my left" + update +} -body { + foreach {x y w h} [.tv bbox foo #0] {} + set res [.tv item foo -open] + # using $h even for x computation is intentional here in order to simulate + # a mouse click on the (invisible since we're on a leaf) indicator + event generate .tv \ + -x [expr ($x + $h / 2)] \ + -y [expr ($y + $h / 2)] + lappend res [.tv item foo -open] + .tv insert foo end -text "sub" + lappend res [.tv item foo -open] +} -result {0 0 0} + tcltest::cleanupTests -- cgit v0.12