gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6

Tcl/Tk 8.6 introduced new events for the cursor left/right keys and
apparently changed the behavior of the previous event.

Let's work around that by using the new events when we are running with
Tcl/Tk 8.6 or later.

This fixes https://github.com/git-for-windows/git/issues/495

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Johannes Schindelin
2016-02-16 16:42:06 +01:00
parent baaa9d6d86
commit ac75b4c265

12
gitk
View File

@ -2238,7 +2238,7 @@ proc makewindow {} {
global headctxmenu progresscanv progressitem progresscoords statusw global headctxmenu progresscanv progressitem progresscoords statusw
global fprogitem fprogcoord lastprogupdate progupdatepending global fprogitem fprogcoord lastprogupdate progupdatepending
global rprogitem rprogcoord rownumsel numcommits global rprogitem rprogcoord rownumsel numcommits
global have_tk85 use_ttk NS global have_tk85 have_tk86 use_ttk NS
global git_version global git_version
global worddiff global worddiff
@ -2736,8 +2736,13 @@ proc makewindow {} {
bind . <Key-Down> "selnextline 1" bind . <Key-Down> "selnextline 1"
bind . <Shift-Key-Up> "dofind -1 0" bind . <Shift-Key-Up> "dofind -1 0"
bind . <Shift-Key-Down> "dofind 1 0" bind . <Shift-Key-Down> "dofind 1 0"
bindkey <Key-Right> "goforw" if {$have_tk86} {
bindkey <Key-Left> "goback" bindkey <<NextChar>> "goforw"
bindkey <<PrevChar>> "goback"
} else {
bindkey <Key-Right> "goforw"
bindkey <Key-Left> "goback"
}
bind . <Key-Prior> "selnextpage -1" bind . <Key-Prior> "selnextpage -1"
bind . <Key-Next> "selnextpage 1" bind . <Key-Next> "selnextpage 1"
bind . <$M1B-Home> "allcanvs yview moveto 0.0" bind . <$M1B-Home> "allcanvs yview moveto 0.0"
@ -12772,6 +12777,7 @@ set nullid2 "0000000000000000000000000000000000000001"
set nullfile "/dev/null" set nullfile "/dev/null"
set have_tk85 [expr {[package vcompare $tk_version "8.5"] >= 0}] set have_tk85 [expr {[package vcompare $tk_version "8.5"] >= 0}]
set have_tk86 [expr {[package vcompare $tk_version "8.6"] >= 0}]
if {![info exists have_ttk]} { if {![info exists have_ttk]} {
set have_ttk [llength [info commands ::ttk::style]] set have_ttk [llength [info commands ::ttk::style]]
} }