gitk: Improve the behaviour of the initial selection
It used to be that if you clicked on a line while gitk was still drawing stuff, it would immediately re-select the first line of the display. This fixes that. Signed-off-by: Paul Mackerras <paulus@samba.org>maint
parent
3fc4279a14
commit
e507fd4871
32
gitk
32
gitk
|
@ -1671,7 +1671,7 @@ proc showview {n} {
|
||||||
global pending_select phase
|
global pending_select phase
|
||||||
global commitidx rowlaidout rowoptim linesegends
|
global commitidx rowlaidout rowoptim linesegends
|
||||||
global commfd nextupdate
|
global commfd nextupdate
|
||||||
global selectedview
|
global selectedview selectfirst
|
||||||
global vparentlist vchildlist vdisporder vcmitlisted
|
global vparentlist vchildlist vdisporder vcmitlisted
|
||||||
global hlview selectedhlview
|
global hlview selectedhlview
|
||||||
|
|
||||||
|
@ -1689,6 +1689,9 @@ proc showview {n} {
|
||||||
} else {
|
} else {
|
||||||
set yscreen [expr {($ybot - $ytop) / 2}]
|
set yscreen [expr {($ybot - $ytop) / 2}]
|
||||||
}
|
}
|
||||||
|
} elseif {[info exists pending_select]} {
|
||||||
|
set selid $pending_select
|
||||||
|
unset pending_select
|
||||||
}
|
}
|
||||||
unselectline
|
unselectline
|
||||||
normalline
|
normalline
|
||||||
|
@ -1723,7 +1726,9 @@ proc showview {n} {
|
||||||
.bar.view entryconf Delete* -state [expr {$n == 0? "disabled": "normal"}]
|
.bar.view entryconf Delete* -state [expr {$n == 0? "disabled": "normal"}]
|
||||||
|
|
||||||
if {![info exists viewdata($n)]} {
|
if {![info exists viewdata($n)]} {
|
||||||
|
if {$selid ne {}} {
|
||||||
set pending_select $selid
|
set pending_select $selid
|
||||||
|
}
|
||||||
getcommits
|
getcommits
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1757,7 +1762,8 @@ proc showview {n} {
|
||||||
set row 0
|
set row 0
|
||||||
setcanvscroll
|
setcanvscroll
|
||||||
set yf 0
|
set yf 0
|
||||||
set row 0
|
set row {}
|
||||||
|
set selectfirst 0
|
||||||
if {$selid ne {} && [info exists commitrow($n,$selid)]} {
|
if {$selid ne {} && [info exists commitrow($n,$selid)]} {
|
||||||
set row $commitrow($n,$selid)
|
set row $commitrow($n,$selid)
|
||||||
# try to get the selected row in the same position on the screen
|
# try to get the selected row in the same position on the screen
|
||||||
|
@ -1770,7 +1776,17 @@ proc showview {n} {
|
||||||
}
|
}
|
||||||
allcanvs yview moveto $yf
|
allcanvs yview moveto $yf
|
||||||
drawvisible
|
drawvisible
|
||||||
|
if {$row ne {}} {
|
||||||
selectline $row 0
|
selectline $row 0
|
||||||
|
} elseif {$selid ne {}} {
|
||||||
|
set pending_select $selid
|
||||||
|
} else {
|
||||||
|
if {$numcommits > 0} {
|
||||||
|
selectline 0 0
|
||||||
|
} else {
|
||||||
|
set selectfirst 1
|
||||||
|
}
|
||||||
|
}
|
||||||
if {$phase ne {}} {
|
if {$phase ne {}} {
|
||||||
if {$phase eq "getcommits"} {
|
if {$phase eq "getcommits"} {
|
||||||
show_status "Reading commits..."
|
show_status "Reading commits..."
|
||||||
|
@ -2407,7 +2423,7 @@ proc initlayout {} {
|
||||||
global nextcolor
|
global nextcolor
|
||||||
global parentlist childlist children
|
global parentlist childlist children
|
||||||
global colormap rowtextx
|
global colormap rowtextx
|
||||||
global linesegends
|
global linesegends selectfirst
|
||||||
|
|
||||||
set numcommits 0
|
set numcommits 0
|
||||||
set displayorder {}
|
set displayorder {}
|
||||||
|
@ -2427,6 +2443,7 @@ proc initlayout {} {
|
||||||
catch {unset rowtextx}
|
catch {unset rowtextx}
|
||||||
catch {unset idrowranges}
|
catch {unset idrowranges}
|
||||||
set linesegends {}
|
set linesegends {}
|
||||||
|
set selectfirst 1
|
||||||
}
|
}
|
||||||
|
|
||||||
proc setcanvscroll {} {
|
proc setcanvscroll {} {
|
||||||
|
@ -2495,6 +2512,7 @@ proc layoutmore {tmax} {
|
||||||
proc showstuff {canshow} {
|
proc showstuff {canshow} {
|
||||||
global numcommits commitrow pending_select selectedline
|
global numcommits commitrow pending_select selectedline
|
||||||
global linesegends idrowranges idrangedrawn curview
|
global linesegends idrowranges idrangedrawn curview
|
||||||
|
global displayorder selectfirst
|
||||||
|
|
||||||
if {$numcommits == 0} {
|
if {$numcommits == 0} {
|
||||||
global phase
|
global phase
|
||||||
|
@ -2533,8 +2551,13 @@ proc showstuff {canshow} {
|
||||||
$commitrow($curview,$pending_select) < $numcommits} {
|
$commitrow($curview,$pending_select) < $numcommits} {
|
||||||
selectline $commitrow($curview,$pending_select) 1
|
selectline $commitrow($curview,$pending_select) 1
|
||||||
}
|
}
|
||||||
if {![info exists selectedline] && ![info exists pending_select]} {
|
if {$selectfirst} {
|
||||||
|
if {[info exists selectedline] || [info exists pending_select]} {
|
||||||
|
set selectfirst 0
|
||||||
|
} else {
|
||||||
selectline 0 1
|
selectline 0 1
|
||||||
|
set selectfirst 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3551,7 +3574,6 @@ proc drawrest {} {
|
||||||
global rowlaidout commitidx curview
|
global rowlaidout commitidx curview
|
||||||
global pending_select
|
global pending_select
|
||||||
|
|
||||||
set row $rowlaidout
|
|
||||||
layoutrows $rowlaidout $commitidx($curview) 1
|
layoutrows $rowlaidout $commitidx($curview) 1
|
||||||
layouttail
|
layouttail
|
||||||
optimize_rows $row 0 $commitidx($curview)
|
optimize_rows $row 0 $commitidx($curview)
|
||||||
|
|
Loading…
Reference in New Issue