-rw-r--r-- | cgit.css | 66 | ||||
-rw-r--r-- | ui-diff.c | 27 | ||||
-rw-r--r-- | ui-ssdiff.c | 30 | ||||
-rw-r--r-- | ui-ssdiff.h | 3 |
4 files changed, 96 insertions, 30 deletions
@@ -604,5 +604,19 @@ table.hgraph div.bar { +table.ssdiff { + width: 100%; +} + +table.ssdiff td { + font-size: 75%; + font-family: monospace; + white-space: pre; + padding: 1px 4px 1px 4px; + border-left: solid 1px #aaa; + border-right: solid 1px #aaa; +} + table.ssdiff td.add { color: black; - background: #afa; + background: #cfc; + min-width: 50%; } @@ -611,3 +625,4 @@ table.ssdiff td.add_dark { color: black; - background: #9c9; + background: #aca; + min-width: 50%; } @@ -616,3 +631,4 @@ table.ssdiff td.del { color: black; - background: #faa; + background: #fcc; + min-width: 50%; } @@ -621,3 +637,4 @@ table.ssdiff td.del_dark { color: black; - background: #c99; + background: #caa; + min-width: 50%; } @@ -626,3 +643,4 @@ table.ssdiff td.changed { color: black; - background: #ffa; + background: #ffc; + min-width: 50%; } @@ -631,3 +649,12 @@ table.ssdiff td.changed_dark { color: black; - background: #cc9; + background: #cca; + min-width: 50%; +} + +table.ssdiff td.lineno { + color: black; + background: #eee; + text-align: right; + width: 3em; + min-width: 3em; } @@ -637,2 +664,29 @@ table.ssdiff td.hunk { background: #ccf; + border-top: solid 1px #aaa; + border-bottom: solid 1px #aaa; } + +table.ssdiff td.head { + border-top: solid 1px #aaa; + border-bottom: solid 1px #aaa; +} + +table.ssdiff td.head div.head { + font-weight: bold; + color: black; +} + +table.ssdiff td.foot { + border-top: solid 1px #aaa; + border-left: none; + border-right: none; + border-bottom: none; +} + +table.ssdiff td.space { + border: none; +} + +table.ssdiff td.space div { + min-height: 3em; +}
\ No newline at end of file @@ -248,4 +248,2 @@ static void header(unsigned char *sha1, char *path1, int mode1, html("</div>"); - if (use_ssdiff) - cgit_ssdiff_header(); } @@ -272,13 +270,15 @@ static void filepair_cb(struct diff_filepair *pair) - header(pair->one->sha1, pair->one->path, pair->one->mode, - pair->two->sha1, pair->two->path, pair->two->mode); if (use_ssdiff) { - cgit_ssdiff_header(); + cgit_ssdiff_header_begin(); print_line_fn = cgit_ssdiff_line_cb; } + header(pair->one->sha1, pair->one->path, pair->one->mode, + pair->two->sha1, pair->two->path, pair->two->mode); + if (use_ssdiff) + cgit_ssdiff_header_end(); if (S_ISGITLINK(pair->one->mode) || S_ISGITLINK(pair->two->mode)) { if (S_ISGITLINK(pair->one->mode)) - print_line(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52); + print_line_fn(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52); if (S_ISGITLINK(pair->two->mode)) - print_line(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52); + print_line_fn(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52); return; @@ -289,3 +289,3 @@ static void filepair_cb(struct diff_filepair *pair) if (binary) - html("Binary files differ"); + print_line_fn(" Binary files differ", 20); if (use_ssdiff) @@ -336,6 +336,11 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefi - html("<table summary='diff' class='diff'>"); - html("<tr><td>"); + if (use_ssdiff) { + html("<table summary='ssdiff' class='ssdiff'>"); + } else { + html("<table summary='diff' class='diff'>"); + html("<tr><td>"); + } cgit_diff_tree(old_rev_sha1, new_rev_sha1, filepair_cb, prefix); - html("</td></tr>"); + if (!use_ssdiff) + html("</td></tr>"); html("</table>"); diff --git a/ui-ssdiff.c b/ui-ssdiff.c index 3591ab4..8215051 100644 --- a/ui-ssdiff.c +++ b/ui-ssdiff.c @@ -42,5 +42,5 @@ static char *replace_tabs(char *line) char *cur_buf; - int linelen = strlen(line); + int linelen = strlen(line); int n_tabs = 0; - int i; + int i; char *result; @@ -54,6 +54,6 @@ static char *replace_tabs(char *line) - for (i = 0; i < linelen; i++) + for (i = 0; i < linelen; i++) if (line[i] == '\t') n_tabs += 1; - result = xmalloc(linelen + n_tabs * 8 + 1); + result = xmalloc(linelen + n_tabs * 8 + 1); result[0] = '\0'; @@ -108,6 +108,6 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line, if (old_line_no > 0) - htmlf("<td class='%s'>%d </td><td class='%s'>", class, + htmlf("<td class='lineno'>%d</td><td class='%s'>", old_line_no, class); else - htmlf("<td class='%s_dark'> </td><td class='%s_dark'>", class, class); + htmlf("<td class='lineno'></td><td class='%s_dark'>", class); @@ -119,9 +119,9 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line, - html(" </td>"); + html("</td>"); if (new_line_no > 0) - htmlf("<td class='%s'> %d </td><td class='%s'>", class, + htmlf("<td class='lineno'>%d</td><td class='%s'>", new_line_no, class); else - htmlf("<td class='%s_dark'> </td><td class='%s_dark'>", class, class); + htmlf("<td class='lineno'></td><td class='%s_dark'>", class); @@ -251,3 +251,3 @@ void cgit_ssdiff_line_cb(char *line, int len) -void cgit_ssdiff_header() +void cgit_ssdiff_header_begin() { @@ -255,3 +255,9 @@ void cgit_ssdiff_header() current_new_line = 0; - html("<table class='ssdiff'>"); + html("<tr><td class='space' colspan='4'><div></div></td></tr>"); + html("<tr><td class='head' colspan='4'>"); +} + +void cgit_ssdiff_header_end() +{ + html("</td><tr>"); } @@ -262,3 +268,3 @@ void cgit_ssdiff_footer() cgit_ssdiff_print_deferred_lines(); - html("</table>"); + html("<tr><td class='foot' colspan='4'></td></tr>"); } diff --git a/ui-ssdiff.h b/ui-ssdiff.h index a0b1efe..64b4b12 100644 --- a/ui-ssdiff.h +++ b/ui-ssdiff.h @@ -7,3 +7,4 @@ extern void cgit_ssdiff_line_cb(char *line, int len); -extern void cgit_ssdiff_header(); +extern void cgit_ssdiff_header_begin(); +extern void cgit_ssdiff_header_end(); |