@matheusbsbs / matheus-bagliano / commits / a99bc27aec
Fork 0

gitk: fix the context menu not appearing in the presence of submodule diffs

Currently, submodule diffs can cause the diff context menu to fail to appear because of a couple bugs in parseblobdiffline: * it appends the submodule name to ctext_file_lines instead of a line number, which breaks the binary search in find_ctext_fileinfo; * it can desynchronize ctext_file_names and ctext_file_lines by appending to the former but not the latter, which also breaks find_ctext_fileinfo. Fix both of these. Note: a side effect of this patch is that the context menu also starts appearing when you right-click on submodule diffs (and not just regular diffs). The menu is non-functional in this case, though, since you can't run blame on submodules. Signed-off-by: Роман Донченко <dpb@corrigendum.ru> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>

Роман Донченко committed Dec 15, 2019 at 21:25 UTC a99bc27aec74071aa1e9ecaa12c642e88e377165
1 file changed +3 -3
gitk
+3 -3
@@ -8231,10 +8231,10 @@ proc parseblobdiffline {ids line} {
8231 if {$currdiffsubmod != $fname} {
8232 $ctext insert end "\n"; # Add newline after commit message
8233 }
8234 - set curdiffstart [$ctext index "end - 1c"]
8235 - lappend ctext_file_names ""
8234 if {$currdiffsubmod != $fname} {
8237 - lappend ctext_file_lines $fname
8235 + set curdiffstart [$ctext index "end - 1c"]
8236 + lappend ctext_file_names ""
8237 + lappend ctext_file_lines [lindex [split $curdiffstart "."] 0]
8238 makediffhdr $fname $ids
8239 set currdiffsubmod $fname
8240 $ctext insert end "\n$line\n" filesep