The listbox manpage says it will take focus on <1> if the widget -state is normal and -takefocus is 1. However, it always takes focus, regardless of the -takefocus option.
The binding for <1> on Listbox should be something like
bind Listbox <1> { if {[winfo exists %W]} { tk::ListboxBeginSelect %W [%W index @%x,%y] [string is true [%W cget -takefocus]] }}
(Currently, where I have [string is true [%W cget -takefocus]] it just has 1.)