git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Роман Донченко <dpb@corrigendum.ru>
Date
Dec 15, 2019, 18:25 UTC
Message-ID
<20191215182550.397-1-dpb@corrigendum.ru>

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>
---
 gitk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gitk b/gitk
index da84e22..2a9bd45 100755
--- a/gitk
+++ b/gitk
@@ -8224,10 +8224,10 @@ proc parseblobdiffline {ids line} {
 	if {$currdiffsubmod != $fname} {
 	    $ctext insert end "\n";     # Add newline after commit message
 	}
-	set curdiffstart [$ctext index "end - 1c"]
-	lappend ctext_file_names ""
 	if {$currdiffsubmod != $fname} {
-	    lappend ctext_file_lines $fname
+	    set curdiffstart [$ctext index "end - 1c"]
+	    lappend ctext_file_names ""
+	    lappend ctext_file_lines [lindex [split $curdiffstart "."] 0]
 	    makediffhdr $fname $ids
 	    set currdiffsubmod $fname
 	    $ctext insert end "\n$line\n" filesep
-- 
2.24.1.windows.2
Next: Paul Mackerras
Message 1 of 3 in “gitk: fix the context menu not appearing in the presence of submodule diffs”
  1. gitk: fix the context menu not appearing in the presence of submodule diffsРоман Донченко, Dec 15, 2019
  2. Paul MackerrasApr 13, 2020
  3. Роман ДонченкоApr 29, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.