debug by way of printing $w
proc hair_delete {w x} {
puts "win:$w"
> if {[llength [$w find withtag aha]]} {
> $w delete aha
> }
> }
my guess is you leave the toplevel.
anyway you explicitly bind to . and not .c"
the toplevel does not know about canvas subcomands.
uwe