Is there an overwrite/overstrike mode for text/entry widget?
|
|
Not by default, but you can change the tkTextInsert and tkEntryInsert
library procedures to include this with the following:
proc tkTextInsert {w s} {
global tkPriv
if {[string match {} $s] || [string match "disabled" [$w cget -state]])} {
return
}
if {[catch {
if {[$w compare sel.first <= insert]
&& [$w compare sel.last >= insert]} {
$w delete sel.first sel.last
}
}] && [info exists tkPriv(overwrite)] && $tkPriv(overwrite)} {
if {[$w compare "insert+[string len $s]c" < "insert lineend"]} {
$w delete insert "insert+[string length $s]c"
} else {
$w delete insert "insert lineend"
}
}
$w insert insert $s
$w see insert
}
proc tkEntryInsert {w s} {
global tkPriv
if {[string match {} $s]} {
return
}
if {[catch {
set insert [$w index insert]
if {([$w index sel.first] <= $insert)
&& ([$w index sel.last] >= $insert)} {
$w delete sel.first sel.last
}
}] && [info exists tkPriv(overwrite)] && $tkPriv(overwrite)} {
$w delete insert [expr {[$w index insert]+[string length $s]}]
}
$w insert insert $s
tkEntrySeeInsert $w
}
Thus you just set the tkPriv(overwrite) variable to 0/1 to switch
between the overwrite and insert modes.
|
|
|