gitk: Remember the view in the history list

When moving backwards or forwards through the history list, this
automatically switches the view so that each point that we jump to
is shown in the same view that it was originally displayed in.

Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Paul Mackerras 2006-04-21 10:35:31 +10:00
parent 22626ef4fd
commit 2516dae2f6

38
gitk
View File

@ -959,7 +959,8 @@ proc showview {n} {
$commitidx $rowlaidout $rowoptim $numcommits \ $commitidx $rowlaidout $rowoptim $numcommits \
$linesegends $leftover $commfd] $linesegends $leftover $commfd]
fileevent $commfd readable {} fileevent $commfd readable {}
} elseif {![info exists viewdata($curview)]} { } elseif {![info exists viewdata($curview)]
|| [lindex $viewdata($curview) 0] ne {}} {
set viewdata($curview) \ set viewdata($curview) \
[list {} $displayorder $parentlist $childlist $rowidlist \ [list {} $displayorder $parentlist $childlist $rowidlist \
$rowoffsets $rowrangelist $commitlisted] $rowoffsets $rowrangelist $commitlisted]
@ -1035,6 +1036,14 @@ proc showview {n} {
allcanvs yview moveto $yf allcanvs yview moveto $yf
drawvisible drawvisible
selectline $row 0 selectline $row 0
if {$phase eq {}} {
global maincursor textcursor
. config -cursor $maincursor
settextcursor $textcursor
} else {
. config -cursor watch
settextcursor watch
}
} }
proc shortids {ids} { proc shortids {ids} {
@ -2301,7 +2310,7 @@ proc stopfindproc {{done 0}} {
} }
if {[info exists findinprogress]} { if {[info exists findinprogress]} {
unset findinprogress unset findinprogress
if {$phase != "incrdraw"} { if {$phase eq {}} {
. config -cursor $maincursor . config -cursor $maincursor
settextcursor $textcursor settextcursor $textcursor
} }
@ -2840,17 +2849,18 @@ proc unselectline {} {
} }
proc addtohistory {cmd} { proc addtohistory {cmd} {
global history historyindex global history historyindex curview
set elt [list $curview $cmd]
if {$historyindex > 0 if {$historyindex > 0
&& [lindex $history [expr {$historyindex - 1}]] == $cmd} { && [lindex $history [expr {$historyindex - 1}]] == $elt} {
return return
} }
if {$historyindex < [llength $history]} { if {$historyindex < [llength $history]} {
set history [lreplace $history $historyindex end $cmd] set history [lreplace $history $historyindex end $elt]
} else { } else {
lappend history $cmd lappend history $elt
} }
incr historyindex incr historyindex
if {$historyindex > 1} { if {$historyindex > 1} {
@ -2861,13 +2871,23 @@ proc addtohistory {cmd} {
.ctop.top.bar.rightbut conf -state disabled .ctop.top.bar.rightbut conf -state disabled
} }
proc godo {elt} {
global curview
set view [lindex $elt 0]
set cmd [lindex $elt 1]
if {$curview != $view} {
showview $view
}
eval $cmd
}
proc goback {} { proc goback {} {
global history historyindex global history historyindex
if {$historyindex > 1} { if {$historyindex > 1} {
incr historyindex -1 incr historyindex -1
set cmd [lindex $history [expr {$historyindex - 1}]] godo [lindex $history [expr {$historyindex - 1}]]
eval $cmd
.ctop.top.bar.rightbut conf -state normal .ctop.top.bar.rightbut conf -state normal
} }
if {$historyindex <= 1} { if {$historyindex <= 1} {
@ -2881,7 +2901,7 @@ proc goforw {} {
if {$historyindex < [llength $history]} { if {$historyindex < [llength $history]} {
set cmd [lindex $history $historyindex] set cmd [lindex $history $historyindex]
incr historyindex incr historyindex
eval $cmd godo $cmd
.ctop.top.bar.leftbut conf -state normal .ctop.top.bar.leftbut conf -state normal
} }
if {$historyindex >= [llength $history]} { if {$historyindex >= [llength $history]} {