diff --git a/git-gui b/git-gui
index 540d563..f36594e 100755
--- a/git-gui
+++ b/git-gui
@@ -150,7 +150,7 @@
 proc update_status {{final Ready.}} {
 	global HEAD PARENT commit_type
 	global ui_index ui_other ui_status_value ui_comm
-	global status_active file_states
+	global status_active file_states file_lists
 	global cfg_trust_mtime
 
 	if {$status_active || ![lock_index read]} return
@@ -166,6 +166,7 @@
 	}
 
 	array unset file_states
+	array unset file_lists
 	foreach w [list $ui_index $ui_other] {
 		$w conf -state normal
 		$w delete 0.0 end
@@ -196,7 +197,7 @@
 proc update_status_stage2 {fd final} {
 	global gitdir PARENT commit_type
 	global ui_index ui_other ui_status_value ui_comm
-	global status_active file_states
+	global status_active
 	global buf_rdi buf_rdf buf_rlo
 
 	if {$fd != {}} {
@@ -346,22 +347,40 @@
 ## diff
 
 proc clear_diff {} {
-	global ui_diff ui_fname_value ui_fstatus_value
+	global ui_diff ui_fname_value ui_fstatus_value ui_index ui_other
 
 	$ui_diff conf -state normal
 	$ui_diff delete 0.0 end
 	$ui_diff conf -state disabled
+
 	set ui_fname_value {}
 	set ui_fstatus_value {}
+
+	$ui_index tag remove in_diff 0.0 end
+	$ui_other tag remove in_diff 0.0 end
 }
 
-proc show_diff {path} {
-	global file_states PARENT diff_3way diff_active
+proc show_diff {path {w {}} {lno {}}} {
+	global file_states file_lists
+	global PARENT diff_3way diff_active
 	global ui_diff ui_fname_value ui_fstatus_value ui_status_value
 
 	if {$diff_active || ![lock_index read]} return
 
 	clear_diff
+	if {$w == {} || $lno == {}} {
+		foreach w [array names file_lists] {
+			set lno [lsearch -sorted $file_lists($w) $path]
+			if {$lno >= 0} {
+				incr lno
+				break
+			}
+		}
+	}
+	if {$w != {} && $lno >= 1} {
+		$w tag add in_diff $lno.0 [expr $lno + 1].0
+	}
+
 	set s $file_states($path)
 	set m [lindex $s 0]
 	set diff_3way 0
@@ -823,27 +842,6 @@
 	return $r
 }
 
-proc bsearch {w path} {
-	set hi [expr [lindex [split [$w index end] .] 0] - 2]
-	if {$hi == 0} {
-		return -1
-	}
-	set lo 0
-	while {$lo < $hi} {
-		set mi [expr [expr $lo + $hi] / 2]
-		set ti [expr $mi + 1]
-		set cmp [string compare [$w get $ti.1 $ti.end] $path]
-		if {$cmp < 0} {
-			set lo $ti
-		} elseif {$cmp == 0} {
-			return $mi
-		} else {
-			set hi $mi
-		}
-	}
-	return -[expr $lo + 1]
-}
-
 set next_icon_id 0
 
 proc merge_state {path new_state} {
@@ -877,7 +875,8 @@
 }
 
 proc display_file {path state} {
-	global ui_index ui_other file_states status_active
+	global ui_index ui_other
+	global file_states file_lists status_active
 
 	set old_m [merge_state $path $state]
 	if {$status_active} return
@@ -889,7 +888,7 @@
 	set new_icon [mapicon $new_m $path]
 
 	if {$new_w != $old_w} {
-		set lno [bsearch $old_w $path]
+		set lno [lsearch -sorted $file_lists($old_w) $path]
 		if {$lno >= 0} {
 			incr lno
 			$old_w conf -state normal
@@ -897,7 +896,10 @@
 			$old_w conf -state disabled
 		}
 
-		set lno [expr abs([bsearch $new_w $path] + 1) + 1]
+		lappend file_lists($new_w) $path
+		set file_lists($new_w) [lsort $file_lists($new_w)]
+		set lno [lsearch -sorted $file_lists($new_w) $path]
+		incr lno
 		$new_w conf -state normal
 		$new_w image create $lno.0 \
 			-align center -padx 5 -pady 1 \
@@ -913,7 +915,7 @@
 }
 
 proc display_all_files {} {
-	global ui_index ui_other file_states
+	global ui_index ui_other file_states file_lists
 
 	$ui_index conf -state normal
 	$ui_other conf -state normal
@@ -922,6 +924,7 @@
 		set s $file_states($path)
 		set m [lindex $s 0]
 		set w [mapcol $m $path]
+		lappend file_lists($w) $path
 		$w image create end \
 			-align center -padx 5 -pady 1 \
 			-name [lindex $s 1] \
@@ -1484,19 +1487,16 @@
 # shift == 1: left click
 #          3: right click  
 proc click {w x y shift wx wy} {
-	global ui_index ui_other
+	global ui_index ui_other file_lists
 
 	set pos [split [$w index @$x,$y] .]
 	set lno [lindex $pos 0]
 	set col [lindex $pos 1]
-	set path [$w get $lno.1 $lno.end]
+	set path [lindex $file_lists($w) [expr $lno - 1]]
 	if {$path == {}} return
 
 	if {$col > 0 && $shift == 1} {
-		$ui_index tag remove in_diff 0.0 end
-		$ui_other tag remove in_diff 0.0 end
-		$w tag add in_diff $lno.0 [expr $lno + 1].0
-		show_diff $path
+		show_diff $path $w $lno
 	}
 }
 
