gitk: Fix two bugs reported by users
authorPaul Mackerras <paulus@samba.org>
Tue, 21 Mar 2006 23:21:45 +0000 (10:21 +1100)
committerPaul Mackerras <paulus@samba.org>
Tue, 21 Mar 2006 23:21:45 +0000 (10:21 +1100)
The first was a simple typo where I put $yc instead of [yc $row].
The second was that I broke the logic for keeping up with fast
movement through the commits, e.g. when you select a commit and then
press down-arrow and let it autorepeat.  That got broken when I
changed the merge diff display to use git-diff-tree --cc.

Signed-off-by: Paul Mackerras <paulus@samba.org>
gitk

diff --git a/gitk b/gitk
index 9f61e68..03cd475 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -1267,9 +1267,9 @@ proc drawlineseg {id i} {
            set x [xc $row $ccol]
            set y [yc $row]
            if {$ccol < $col - 1} {
-               lappend coords [xc $row [expr {$col - 1}]] $yc
+               lappend coords [xc $row [expr {$col - 1}]] [yc $row]
            } elseif {$ccol > $col + 1} {
-               lappend coords [xc $row [expr {$col + 1}]] $yc
+               lappend coords [xc $row [expr {$col + 1}]] [yc $row]
            }
            lappend coords $x $y
        }
@@ -2451,9 +2451,10 @@ proc goforw {} {
 
 proc mergediff {id} {
     global parents diffmergeid diffopts mdifffd
-    global difffilestart
+    global difffilestart diffids
 
     set diffmergeid $id
+    set diffids $id
     catch {unset difffilestart}
     # this doesn't seem to actually affect anything...
     set env(GIT_DIFF_OPTS) $diffopts
@@ -2470,7 +2471,7 @@ proc mergediff {id} {
 
 proc getmergediffline {mdf id} {
     global diffmergeid ctext cflist nextupdate nparents mergemax
-    global difffilestart
+    global difffilestart mdifffd
 
     set n [gets $mdf line]
     if {$n < 0} {
@@ -2479,7 +2480,8 @@ proc getmergediffline {mdf id} {
        }
        return
     }
-    if {![info exists diffmergeid] || $id != $diffmergeid} {
+    if {![info exists diffmergeid] || $id != $diffmergeid
+       || $mdf != $mdifffd($id)} {
        return
     }
     $ctext conf -state normal
@@ -2589,13 +2591,11 @@ proc gettreediffline {gdtf ids} {
        set treediffs($ids) $treediff
        unset treepending
        if {$ids != $diffids} {
-           gettreediffs $diffids
-       } else {
-           if {[info exists diffmergeid]} {
-               contmergediff $ids
-           } else {
-               addtocflist $ids
+           if {![info exists diffmergeid]} {
+               gettreediffs $diffids
            }
+       } else {
+           addtocflist $ids
        }
        return
     }