Tk Source Code

View Ticket
Login
Ticket UUID: 368fa4561e6985dd472535b54c3023a51889cc3a
Title: ttk::treeview open/closed indicators can be toggled while hidden
Type: Bug Version: 8.6
Submitter: ulfalizer Created on: 2019-04-07 12:57:56
Subsystem: 88. Themed Tk Assigned To: fvogel
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2019-04-19 09:16:58
Resolution: Fixed Closed By: fvogel
    Closed on: 2019-04-19 09:16:58
Description:

Try the following example, and notice that the tree open/closed status is toggled by clicking on the non-existent (or maybe just hidden) open/closed indicator.

pack [ttk::treeview .tree] -fill x
bind .tree <1> {puts [.tree identify element %x %y]}
.tree insert {} end -id foo -text "<-- (1) Click the blank space to my left" 

pack [ttk::button .button -text "(2) Click here and notice that the subtree starts out open" \
      -command {.tree insert foo end -text "sub"}]
Another thing that might be minorly confusing is that the identify call returns "TreeItem.indicator" when clicking where the indicator would be. Might be intentional though.

It's great that items remember their open/closed status when being detached and reattached by the way. My GUI relies heavily on it, because it dynamically updates the tree a lot. :)

User Comments: fvogel added on 2019-04-19 09:16:58:
Merged to core-8-6-branch and trunk.

fvogel added on 2019-04-13 16:46:11:
I have added test treeview-368fa4561e checking for non-regression regarding this bug.

fvogel added on 2019-04-13 07:35:21:
Wait a second, I'll close this ticket when I merge the fix. Besides, I'm still thinking at whether the fix can be tested and if a new test could be added or not. Reopening for the moment.

ulfalizer added on 2019-04-11 00:18:13:
> About the string returned by "identify", I didn't change anything. What other
> output than "TreeItem.indicator" would you expect? Documentation says this
> "identify" command identifies the "element" (which has to be undertood as: the
> element of the layout, as described in the ttk::intro man page) on which the user
> clicked. This remains true whether the indicator is visible or not: this portion
> of the screen is the room allocated for the indicator.

Makes sense. Wanted to make sure the element was supposed to be considered "there" while hidden.

Tried out the fix - works fine. Thanks!

fvogel added on 2019-04-10 20:02:17:

I have a fix, please see [f8bab95d] in the dedicated bugfix branch bug-368fa4561e.

This fix prevents toggling on tree leafs, which do not show indicators. Please test with your application.

About the string returned by "identify", I didn't change anything. What other output than "TreeItem.indicator" would you expect? Documentation says this "identify" command identifies the "element" (which has to be undertood as: the element of the layout, as described in the ttk::intro man page) on which the user clicked. This remains true whether the indicator is visible or not: this portion of the screen is the room allocated for the indicator.