about summary refs log tree commit diff
path: root/ui-diff.c
diff options
context:
space:
mode:
authorRagnar Ouchterlony <ragnar@lysator.liu.se>2009-09-16 18:56:26 +0200
committerLars Hjemli <hjemli@gmail.com>2009-09-16 20:17:56 +0200
commit4a198e4b8ee62a9a8b5156a46bfce46dc7223fe9 (patch)
treec6389de8ae75cf907ed3884e87ee554d80498145 /ui-diff.c
parentPolishing of how the side-by-side diff looks. (diff)
downloadcgit-pink-4a198e4b8ee62a9a8b5156a46bfce46dc7223fe9.tar.gz
cgit-pink-4a198e4b8ee62a9a8b5156a46bfce46dc7223fe9.zip
Fixed side-by-side diff bugs related to binary diff and more.
The fixed bugs:

 * "Binary files differ" did not show up either in unidiff or
   side-by-side-diff.
 * Subproject diffs did not work for side-by-side diffs.
 * The ssdiff link on diff pages did not conserve the path.

Signed-off-by: Ragnar Ouchterlony <ragnar@lysator.liu.se>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-diff.c')
-rw-r--r--ui-diff.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/ui-diff.c b/ui-diff.c
index b21c2c1..a92a768 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -253,11 +253,11 @@ static void print_ssdiff_link()
 	if (!strcmp(ctx.qry.page, "diff")) {
 		if (use_ssdiff)
 			cgit_diff_link("Unidiff", NULL, NULL, ctx.qry.head,
-				       ctx.qry.sha1, ctx.qry.sha2, NULL, 1);
+				       ctx.qry.sha1, ctx.qry.sha2, ctx.qry.path, 1);
 		else
 			cgit_diff_link("Side-by-side diff", NULL, NULL,
 				       ctx.qry.head, ctx.qry.sha1,
-				       ctx.qry.sha2, NULL, 1);
+				       ctx.qry.sha2, ctx.qry.path, 1);
 	}
 }
 
@@ -281,13 +281,19 @@ static void filepair_cb(struct diff_filepair *pair)
 			print_line_fn(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52);
 		if (S_ISGITLINK(pair->two->mode))
 			print_line_fn(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52);
+		if (use_ssdiff)
+			cgit_ssdiff_footer();
 		return;
 	}
 	if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size,
 			    &new_size, &binary, print_line_fn))
 		cgit_print_error("Error running diff");
-	if (binary)
-		print_line_fn(" Binary files differ", 20);
+	if (binary) {
+		if (use_ssdiff)
+			html("<tr><td colspan='4'>Binary files differ</td></tr>");
+		else
+			html("Binary files differ");
+	}
 	if (use_ssdiff)
 		cgit_ssdiff_footer();
 }