git-gui: Fix focus transition in the blame viewer.
Now that the blame viewer has a search panel, it should be taken into account by the focus transition code. Otherwise showing a commit tip (by accidentally moving the mouse to the text frame) causes the focus to transfer away from the search field. Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
9d83c6aa44
commit
b28ebab294
@ -321,7 +321,7 @@ constructor new {i_commit i_path i_jump} {
|
||||
tk_popup $w.ctxm %X %Y
|
||||
"
|
||||
bind $i <Shift-Tab> "[list focus $w_cviewer];break"
|
||||
bind $i <Tab> "[list focus $w_cviewer];break"
|
||||
bind $i <Tab> "[cb _focus_search $w_cviewer];break"
|
||||
}
|
||||
|
||||
foreach i [concat $w_columns $w_cviewer] {
|
||||
@ -337,10 +337,10 @@ constructor new {i_commit i_path i_jump} {
|
||||
bind $i <Control-Key-f> {catch {%W yview scroll 1 pages};break}
|
||||
}
|
||||
|
||||
bind $w_cviewer <Shift-Tab> "[list focus $w_file];break"
|
||||
bind $w_cviewer <Shift-Tab> "[cb _focus_search $w_file];break"
|
||||
bind $w_cviewer <Tab> "[list focus $w_file];break"
|
||||
bind $w_cviewer <Button-1> [list focus $w_cviewer]
|
||||
bind $w_file <Visibility> [list focus $w_file]
|
||||
bind $w_cviewer <Button-1> [list focus $w_cviewer]
|
||||
bind $w_file <Visibility> [cb _focus_search $w_file]
|
||||
bind $top <F7> [list searchbar::show $finder]
|
||||
bind $top <Escape> [list searchbar::hide $finder]
|
||||
bind $top <F3> [list searchbar::find_next $finder]
|
||||
@ -382,6 +382,14 @@ constructor new {i_commit i_path i_jump} {
|
||||
_load $this $i_jump
|
||||
}
|
||||
|
||||
method _focus_search {win} {
|
||||
if {[searchbar::visible $finder]} {
|
||||
focus [searchbar::editor $finder]
|
||||
} else {
|
||||
focus $win
|
||||
}
|
||||
}
|
||||
|
||||
method _handle_destroy {win} {
|
||||
if {$win eq $w} {
|
||||
_kill $this
|
||||
|
@ -19,11 +19,11 @@ constructor new {i_w i_text args} {
|
||||
|
||||
frame $w
|
||||
label $w.l -text [mc Find:]
|
||||
entry $w.ent -textvariable ${__this}::searchstring -background lightgreen
|
||||
button $w.bn -text [mc Next] -command [cb find_next]
|
||||
button $w.bp -text [mc Prev] -command [cb find_prev]
|
||||
checkbutton $w.cs -text [mc Case-Sensitive] \
|
||||
-variable ${__this}::casesensitive -command [cb _incrsearch]
|
||||
entry $w.ent -textvariable ${__this}::searchstring -background lightgreen
|
||||
pack $w.l -side left
|
||||
pack $w.cs -side right
|
||||
pack $w.bp -side right
|
||||
@ -40,19 +40,27 @@ constructor new {i_w i_text args} {
|
||||
}
|
||||
|
||||
method show {} {
|
||||
if {![winfo ismapped $w]} {
|
||||
if {![visible $this]} {
|
||||
grid $w
|
||||
}
|
||||
focus -force $w.ent
|
||||
}
|
||||
|
||||
method hide {} {
|
||||
if {[winfo ismapped $w]} {
|
||||
if {[visible $this]} {
|
||||
focus $ctext
|
||||
grid remove $w
|
||||
}
|
||||
}
|
||||
|
||||
method visible {} {
|
||||
return [winfo ismapped $w]
|
||||
}
|
||||
|
||||
method editor {} {
|
||||
return $w.ent
|
||||
}
|
||||
|
||||
method _get_new_anchor {} {
|
||||
# use start of selection if it is visible,
|
||||
# or the bounds of the visible area
|
||||
|
Loading…
Reference in New Issue
Block a user