提交 3f81fc82 编写于 作者: J Junio C Hamano

Merge with gitk.

This merges commit
    d698206c
from gitk into our head commit
    2c6e4771

Sincerely,
    jit-merge command.
...@@ -339,6 +339,30 @@ proc makewindow {} { ...@@ -339,6 +339,30 @@ proc makewindow {} {
entry $sha1entry -width 40 -font $textfont -textvariable sha1string entry $sha1entry -width 40 -font $textfont -textvariable sha1string
trace add variable sha1string write sha1change trace add variable sha1string write sha1change
pack $sha1entry -side left -pady 2 pack $sha1entry -side left -pady 2
image create bitmap bm-left -data {
#define left_width 16
#define left_height 16
static unsigned char left_bits[] = {
0x00, 0x00, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00,
0x0e, 0x00, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x0e, 0x00, 0x1c, 0x00,
0x38, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01};
}
image create bitmap bm-right -data {
#define right_width 16
#define right_height 16
static unsigned char right_bits[] = {
0x00, 0x00, 0xc0, 0x01, 0x80, 0x03, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x1c,
0x00, 0x38, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x00, 0x38, 0x00, 0x1c,
0x00, 0x0e, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01};
}
button .ctop.top.bar.leftbut -image bm-left -command goback \
-state disabled -width 26
pack .ctop.top.bar.leftbut -side left -fill y
button .ctop.top.bar.rightbut -image bm-right -command goforw \
-state disabled -width 26
pack .ctop.top.bar.rightbut -side left -fill y
button .ctop.top.bar.findbut -text "Find" -command dofind button .ctop.top.bar.findbut -text "Find" -command dofind
pack .ctop.top.bar.findbut -side left pack .ctop.top.bar.findbut -side left
set findstring {} set findstring {}
...@@ -1175,7 +1199,7 @@ proc drawrest {level startix} { ...@@ -1175,7 +1199,7 @@ proc drawrest {level startix} {
#puts "overall $drawmsecs ms for $numcommits commits" #puts "overall $drawmsecs ms for $numcommits commits"
if {$redisplaying} { if {$redisplaying} {
if {$stopped == 0 && [info exists selectedline]} { if {$stopped == 0 && [info exists selectedline]} {
selectline $selectedline selectline $selectedline 0
} }
if {$stopped == 1} { if {$stopped == 1} {
set stopped 0 set stopped 0
...@@ -1274,7 +1298,7 @@ proc dofind {} { ...@@ -1274,7 +1298,7 @@ proc dofind {} {
proc findselectline {l} { proc findselectline {l} {
global findloc commentend ctext global findloc commentend ctext
selectline $l selectline $l 1
if {$findloc == "All fields" || $findloc == "Comments"} { if {$findloc == "All fields" || $findloc == "Comments"} {
# highlight the matches in the comments # highlight the matches in the comments
set f [$ctext get 1.0 $commentend] set f [$ctext get 1.0 $commentend]
...@@ -1665,15 +1689,17 @@ proc selcanvline {w x y} { ...@@ -1665,15 +1689,17 @@ proc selcanvline {w x y} {
if {![info exists rowtextx($l)] || $x < $rowtextx($l)} return if {![info exists rowtextx($l)] || $x < $rowtextx($l)} return
} }
unmarkmatches unmarkmatches
selectline $l selectline $l 1
} }
proc selectline {l} { proc selectline {l isnew} {
global canv canv2 canv3 ctext commitinfo selectedline global canv canv2 canv3 ctext commitinfo selectedline
global lineid linehtag linentag linedtag global lineid linehtag linentag linedtag
global canvy0 linespc parents nparents global canvy0 linespc parents nparents
global cflist currentid sha1entry global cflist currentid sha1entry
global commentend idtags global commentend idtags idline
global history historyindex
$canv delete hover $canv delete hover
if {![info exists lineid($l)] || ![info exists linehtag($l)]} return if {![info exists lineid($l)] || ![info exists linehtag($l)]} return
$canv delete secsel $canv delete secsel
...@@ -1722,6 +1748,22 @@ proc selectline {l} { ...@@ -1722,6 +1748,22 @@ proc selectline {l} {
} }
allcanvs yview moveto [expr $newtop * 1.0 / $ymax] allcanvs yview moveto [expr $newtop * 1.0 / $ymax]
} }
if {$isnew && (![info exists selectedline] || $selectedline != $l)} {
if {$historyindex < [llength $history]} {
set history [lreplace $history $historyindex end $l]
} else {
lappend history $l
}
incr historyindex
if {$historyindex > 1} {
.ctop.top.bar.leftbut conf -state normal
} else {
.ctop.top.bar.leftbut conf -state disabled
}
.ctop.top.bar.rightbut conf -state disabled
}
set selectedline $l set selectedline $l
set id $lineid($l) set id $lineid($l)
...@@ -1746,8 +1788,25 @@ proc selectline {l} { ...@@ -1746,8 +1788,25 @@ proc selectline {l} {
$ctext insert end "\n" $ctext insert end "\n"
} }
$ctext insert end "\n" $ctext insert end "\n"
$ctext insert end [lindex $info 5] set commentstart [$ctext index "end - 1c"]
set comment [lindex $info 5]
$ctext insert end $comment
$ctext insert end "\n" $ctext insert end "\n"
# make anything that looks like a SHA1 ID be a clickable link
set links [regexp -indices -all -inline {[0-9a-f]{40}} $comment]
set i 0
foreach l $links {
set s [lindex $l 0]
set e [lindex $l 1]
set linkid [string range $comment $s $e]
if {![info exists idline($linkid)]} continue
incr e
$ctext tag conf link$i -foreground blue -underline 1
$ctext tag add link$i "$commentstart + $s c" "$commentstart + $e c"
$ctext tag bind link$i <1> [list selectline $idline($linkid) 1]
}
$ctext tag delete Comments $ctext tag delete Comments
$ctext tag remove found 1.0 end $ctext tag remove found 1.0 end
$ctext conf -state disabled $ctext conf -state disabled
...@@ -1767,7 +1826,34 @@ proc selnextline {dir} { ...@@ -1767,7 +1826,34 @@ proc selnextline {dir} {
if {![info exists selectedline]} return if {![info exists selectedline]} return
set l [expr $selectedline + $dir] set l [expr $selectedline + $dir]
unmarkmatches unmarkmatches
selectline $l selectline $l 1
}
proc goback {} {
global history historyindex
if {$historyindex > 1} {
incr historyindex -1
selectline [lindex $history [expr {$historyindex - 1}]] 0
.ctop.top.bar.rightbut conf -state normal
}
if {$historyindex <= 1} {
.ctop.top.bar.leftbut conf -state disabled
}
}
proc goforw {} {
global history historyindex
if {$historyindex < [llength $history]} {
set l [lindex $history $historyindex]
incr historyindex
selectline $l 0
.ctop.top.bar.leftbut conf -state normal
}
if {$historyindex >= [llength $history]} {
.ctop.top.bar.rightbut conf -state disabled
}
} }
proc mergediff {id} { proc mergediff {id} {
...@@ -2590,7 +2676,7 @@ proc gotocommit {} { ...@@ -2590,7 +2676,7 @@ proc gotocommit {} {
} }
} }
if {[info exists idline($id)]} { if {[info exists idline($id)]} {
selectline $idline($id) selectline $idline($id) 1
return return
} }
if {[regexp {^[0-9a-fA-F]{4,}$} $sha1string]} { if {[regexp {^[0-9a-fA-F]{4,}$} $sha1string]} {
...@@ -2702,7 +2788,7 @@ proc lineclick {x y id} { ...@@ -2702,7 +2788,7 @@ proc lineclick {x y id} {
proc selbyid {id} { proc selbyid {id} {
global idline global idline
if {[info exists idline($id)]} { if {[info exists idline($id)]} {
selectline $idline($id) selectline $idline($id) 1
} }
} }
...@@ -2906,7 +2992,7 @@ proc domktag {} { ...@@ -2906,7 +2992,7 @@ proc domktag {} {
set xt [eval drawtags $id $idpos($id)] set xt [eval drawtags $id $idpos($id)]
$canv coords $linehtag($idline($id)) $xt [lindex $idpos($id) 2] $canv coords $linehtag($idline($id)) $xt [lindex $idpos($id) 2]
if {[info exists selectedline] && $selectedline == $idline($id)} { if {[info exists selectedline] && $selectedline == $idline($id)} {
selectline $selectedline selectline $selectedline 0
} }
} }
...@@ -3016,6 +3102,9 @@ foreach arg $argv { ...@@ -3016,6 +3102,9 @@ foreach arg $argv {
} }
} }
set history {}
set historyindex 0
set stopped 0 set stopped 0
set redisplaying 0 set redisplaying 0
set stuffsaved 0 set stuffsaved 0
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册