]> granicus.if.org Git - cgit/commitdiff
Polishing of how the side-by-side diff looks.
authorRagnar Ouchterlony <ragnar@lysator.liu.se>
Tue, 15 Sep 2009 17:44:37 +0000 (19:44 +0200)
committerLars Hjemli <hjemli@gmail.com>
Wed, 16 Sep 2009 18:17:56 +0000 (20:17 +0200)
Aligned all different files, so that all side-by-side tables look
the same. Also made sure that the tables take up the whole browser
width.

Also various changes to the css to make things easier on the eye.

Signed-off-by: Ragnar Ouchterlony <ragnar@lysator.liu.se>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
cgit.css
ui-diff.c
ui-ssdiff.c
ui-ssdiff.h

index bf58b8a2ac919828d74f13ddca145d3090ff99e7..3f37165c16d96e1a5c5859b1db16b8fdc7d224cb 100644 (file)
--- a/cgit.css
+++ b/cgit.css
@@ -602,37 +602,91 @@ table.hgraph div.bar {
        height: 1em;
 }
 
+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%;
 }
 
 table.ssdiff td.add_dark {
        color: black;
-       background: #9c9;
+       background: #aca;
+       min-width: 50%;
 }
 
 table.ssdiff td.del {
        color: black;
-       background: #faa;
+       background: #fcc;
+       min-width: 50%;
 }
 
 table.ssdiff td.del_dark {
        color: black;
-       background: #c99;
+       background: #caa;
+       min-width: 50%;
 }
 
 table.ssdiff td.changed {
        color: black;
-       background: #ffa;
+       background: #ffc;
+       min-width: 50%;
 }
 
 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;
 }
 
 table.ssdiff td.hunk {
        color: #black;
        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
index 42e81ace3a12216196270edab629a5fcdf59aa13..b21c2c16a2c6e8a33465c550704ad36e3ce46e82 100644 (file)
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -246,8 +246,6 @@ static void header(unsigned char *sha1, char *path1, int mode1,
                        html_txt(path2);
        }
        html("</div>");
-       if (use_ssdiff)
-               cgit_ssdiff_header();
 }
 
 static void print_ssdiff_link()
@@ -270,24 +268,26 @@ static void filepair_cb(struct diff_filepair *pair)
        int binary = 0;
        linediff_fn print_line_fn = print_line;
 
-       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;
        }
        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)
-               html("Binary files differ");
+               print_line_fn(" Binary files differ", 20);
        if (use_ssdiff)
                cgit_ssdiff_footer();
 }
@@ -334,9 +334,14 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefi
        print_ssdiff_link();
        cgit_print_diffstat(old_rev_sha1, new_rev_sha1);
 
-       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>");
 }
index 3591ab459ce67ac1116ab43cdc3ce53bb1722af8..82150516602073bcb6470c292327af0968fb3808 100644 (file)
@@ -40,9 +40,9 @@ static char *replace_tabs(char *line)
 {
        char *prev_buf = line;
        char *cur_buf;
-        int linelen = strlen(line);
+       int linelen = strlen(line);
        int n_tabs = 0;
-        int i;
+       int i;
        char *result;
        char *spaces = "        ";
 
@@ -52,10 +52,10 @@ static char *replace_tabs(char *line)
                return result;
        }
 
-        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';
 
        while (1) {
@@ -106,10 +106,10 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line,
 {
        html("<tr>");
        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);
 
        if (old_line) {
                old_line = replace_tabs(old_line + 1);
@@ -117,13 +117,13 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line,
                free(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);
 
        if (new_line) {
                new_line = replace_tabs(new_line + 1);
@@ -249,16 +249,22 @@ void cgit_ssdiff_line_cb(char *line, int len)
        line[len - 1] = c;
 }
 
-void cgit_ssdiff_header()
+void cgit_ssdiff_header_begin()
 {
        current_old_line = 0;
        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>");
 }
 
 void cgit_ssdiff_footer()
 {
        if (deferred_old || deferred_new)
                cgit_ssdiff_print_deferred_lines();
-       html("</table>");
+       html("<tr><td class='foot' colspan='4'></td></tr>");
 }
index a0b1efe2a576dfdb2b52d4d2a2f7c843e97c5cb2..64b4b1215adced788d2145cf9b771ed9d669d464 100644 (file)
@@ -5,7 +5,8 @@ extern void cgit_ssdiff_print_deferred_lines();
 
 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();
 
 extern void cgit_ssdiff_footer();