diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-01-27 00:13:30 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-01-27 00:13:30 (GMT) |
commit | c8a2197a8f8889526bac61c8f6bc61f27ec225f4 (patch) | |
tree | cc90ed185e5949abc10bc6e3dc15e866eeb90aae | |
parent | 1fd741b0b4c30061a7a61056f53dd0421e9353b4 (diff) | |
download | tk-c8a2197a8f8889526bac61c8f6bc61f27ec225f4.zip tk-c8a2197a8f8889526bac61c8f6bc61f27ec225f4.tar.gz tk-c8a2197a8f8889526bac61c8f6bc61f27ec225f4.tar.bz2 |
Same change for Entry en (ttk::)spinbox
-rw-r--r-- | library/entry.tcl | 60 | ||||
-rw-r--r-- | library/spinbox.tcl | 2 | ||||
-rw-r--r-- | library/ttk/entry.tcl | 31 |
3 files changed, 55 insertions, 38 deletions
diff --git a/library/entry.tcl b/library/entry.tcl index e8f260b..2090fa7 100644 --- a/library/entry.tcl +++ b/library/entry.tcl @@ -143,7 +143,7 @@ bind Entry <<SelectPrevWord>> { tk::EntrySeeInsert %W } bind Entry <<SelectNextWord>> { - tk::EntryKeySelect %W [tk::EntryNextWord %W insert] + tk::EntryKeySelect %W [tk::EntrySelectNextWord %W insert] tk::EntrySeeInsert %W } bind Entry <<LineStart>> { @@ -588,40 +588,44 @@ proc ::tk::EntryTranspose w { } # ::tk::EntryNextWord -- -# Returns the index of the next word position after a given position in the -# entry. The next word is platform dependent and may be either the next -# end-of-word position or the next start-of-word position after the next -# end-of-word position. +# Returns the index of the next start-of-word position after the next +# end-of-word position after a given position in the text. # # Arguments: # w - The entry window in which the cursor is to move. # start - Position at which to start search. -if {[tk windowingsystem] eq "win32"} { - proc ::tk::EntryNextWord {w start} { - if {[$w cget -show] ne ""} { - return end - } - set pos [tk::endOfWord [$w get] [$w index $start]] - if {$pos >= 0} { - set pos [tk::startOfNextWord [$w get] $pos] - } - if {$pos < 0} { - return end - } - return $pos +proc ::tk::EntryNextWord {w start} { + if {[$w cget -show] ne ""} { + return end } -} else { - proc ::tk::EntryNextWord {w start} { - if {[$w cget -show] ne ""} { - return end - } - set pos [tk::endOfWord [$w get] [$w index $start]] - if {$pos < 0} { - return end - } - return $pos + set pos [tk::endOfWord [$w get] [$w index $start]] + if {$pos >= 0} { + set pos [tk::startOfNextWord [$w get] $pos] + } + if {$pos < 0} { + return end + } + return $pos +} + +# ::tk::EntryNextWord -- +# Returns the index of the next end-of-word position after a given +# position in the text. +# +# Arguments: +# w - The entry window in which the cursor is to move. +# start - Position at which to start search. + +proc ::tk::EntrySelectNextWord {w start} { + if {[$w cget -show] ne ""} { + return end } + set pos [tk::endOfWord [$w get] [$w index $start]] + if {$pos < 0} { + return end + } + return $pos } # ::tk::EntryPreviousWord -- diff --git a/library/spinbox.tcl b/library/spinbox.tcl index 1430800..094be29 100644 --- a/library/spinbox.tcl +++ b/library/spinbox.tcl @@ -153,7 +153,7 @@ bind Spinbox <<SelectPrevWord>> { ::tk::EntrySeeInsert %W } bind Spinbox <<SelectNextWord>> { - ::tk::EntryKeySelect %W [::tk::EntryNextWord %W insert] + ::tk::EntryKeySelect %W [::tk::EntrySelectNextWord %W insert] ::tk::EntrySeeInsert %W } bind Spinbox <<LineStart>> { diff --git a/library/ttk/entry.tcl b/library/ttk/entry.tcl index d5170fd..b01e6a2 100644 --- a/library/ttk/entry.tcl +++ b/library/ttk/entry.tcl @@ -104,7 +104,7 @@ bind TEntry <<LineEnd>> { ttk::entry::Move %W end } bind TEntry <<SelectPrevChar>> { ttk::entry::Extend %W prevchar } bind TEntry <<SelectNextChar>> { ttk::entry::Extend %W nextchar } bind TEntry <<SelectPrevWord>> { ttk::entry::Extend %W prevword } -bind TEntry <<SelectNextWord>> { ttk::entry::Extend %W nextword } +bind TEntry <<SelectNextWord>> { ttk::entry::Extend %W selectnextword } bind TEntry <<SelectLineStart>> { ttk::entry::Extend %W home } bind TEntry <<SelectLineEnd>> { ttk::entry::Extend %W end } @@ -248,21 +248,17 @@ proc ttk::entry::See {w {index insert}} { } } -## NextWord -- Find the next word position. -# Note: The "next word position" follows platform conventions: -# either the next end-of-word position, or the start-of-word -# position following the next end-of-word position. +## NextWord -- +# Returns the index of the next start-of-word position after the next +# end-of-word position after a given position in the text. # -set ::ttk::entry::State(startNext) \ - [string equal [tk windowingsystem] "win32"] - proc ttk::entry::NextWord {w start} { if {[$w cget -show] ne ""} { return end } variable State set pos [tk::endOfWord [$w get] [$w index $start]] - if {$pos >= 0 && $State(startNext)} { + if {$pos >= 0} { set pos [tk::startOfNextWord [$w get] $pos] } if {$pos < 0} { @@ -271,6 +267,22 @@ proc ttk::entry::NextWord {w start} { return $pos } +## SelectNextWord -- +# Returns the index of the next end-of-word position after a given +# position in the text. +# +proc ttk::entry::SelectNextWord {w start} { + if {[$w cget -show] ne ""} { + return end + } + variable State + set pos [tk::endOfWord [$w get] [$w index $start]] + if {$pos < 0} { + return end + } + return $pos +} + ## PrevWord -- Find the previous word position. # proc ttk::entry::PrevWord {w start} { @@ -313,6 +325,7 @@ proc ttk::entry::RelIndex {w where {index insert}} { nextchar { NextChar $w $index } prevword { PrevWord $w $index } nextword { NextWord $w $index } + selectnextword { SelectNextWord $w $index } home { return 0 } end { $w index end } default { error "Bad relative index $index" } |