Posted to tcl by kbk at Fri Aug 15 20:19:15 GMT 2008view pretty

# If we're using KHIM, make all entries and texts use it.

if {[package provide khim] ne {}} {
    foreach command {::entry ::tk::entry ::text ::tk::text ::ttk::entry} {
        if {[interp alias {} $command] ne {}} {
            continue
        }
        if {[namespace which $command] eq {}} {
            continue
        }
        set ns [namespace qualifiers $command]
        set t [namespace tail $command]
        if {[namespace which ${ns}::khimWrapped${t}] ne {}} {
            continue
        }
        rename ${ns}::${t} ${ns}::khimWrapped${t}
        proc ${ns}::${t} {w args} [string map [list @ns $ns @t $t] {
            eval [linsert $args 0 @ns::khimWrapped@t $w]
            bindtags $w [linsert [bindtags $w] 1 KHIM]
            return $w
        }]
    }
}