aboutsummaryrefslogtreecommitdiff
path: root/ui-diff.c
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'ui-diff.c')
-rw-r--r--ui-diff.c83
1 files changed, 29 insertions, 54 deletions
diff --git a/ui-diff.c b/ui-diff.c
index d97a801..383a534 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -169,7 +169,7 @@ static void inspect_filepair(struct diff_filepair *pair)
void cgit_print_diffstat(const unsigned char *old_sha1,
const unsigned char *new_sha1, const char *prefix)
{
- int i;
+ int i, save_context = ctx.qry.context;
html("<div class='diffstat-header'>");
cgit_diff_link("Diffstat", NULL, NULL, ctx.qry.head, ctx.qry.sha1,
@@ -179,6 +179,19 @@ void cgit_print_diffstat(const unsigned char *old_sha1,
html_txt(prefix);
html("')");
}
+ html(" (");
+ ctx.qry.context = (save_context > 0 ? save_context : 3) << 1;
+ cgit_self_link("more", NULL, NULL, &ctx);
+ html("/");
+ ctx.qry.context = (save_context > 3 ? save_context : 3) >> 1;
+ cgit_self_link("less", NULL, NULL, &ctx);
+ ctx.qry.context = save_context;
+ html(" context)");
+ html(" (");
+ ctx.qry.ignorews = (ctx.qry.ignorews + 1) % 2;
+ cgit_self_link(ctx.qry.ignorews ? "ignore" : "show", NULL, NULL, &ctx);
+ ctx.qry.ignorews = (ctx.qry.ignorews + 1) % 2;
+ html(" whitespace changes)");
html("</div>");
html("<table summary='diffstat' class='diffstat'>");
max_changes = 0;
@@ -267,6 +280,19 @@ static void header(unsigned char *sha1, char *path1, int mode1,
html("</div>");
}
+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, ctx.qry.path, 1);
+ else
+ cgit_diff_link("Side-by-side diff", NULL, NULL,
+ ctx.qry.head, ctx.qry.sha1,
+ ctx.qry.sha2, ctx.qry.path, 1);
+ }
+}
+
static void filepair_cb(struct diff_filepair *pair)
{
unsigned long old_size = 0;
@@ -306,56 +332,7 @@ static void filepair_cb(struct diff_filepair *pair)
cgit_ssdiff_footer();
}
-void cgit_print_diff_ctrls()
-{
- int i, curr;
-
- html("<div class='cgit-panel'>");
- html("<b>diff options</b>");
- html("<form method='get' action='.'>");
- cgit_add_hidden_formfields(1, 0, ctx.qry.page);
- html("<table>");
- html("<tr><td colspan='2'/></tr>");
- html("<tr>");
- html("<td class='label'>context:</td>");
- html("<td class='ctrl'>");
- html("<select name='context' onchange='this.form.submit();'>");
- curr = ctx.qry.context;
- if (!curr)
- curr = 3;
- for (i = 1; i <= 10; i++)
- html_intoption(i, fmt("%d", i), curr);
- for (i = 15; i <= 40; i += 5)
- html_intoption(i, fmt("%d", i), curr);
- html("</select>");
- html("</td>");
- html("</tr><tr>");
- html("<td class='label'>space:</td>");
- html("<td class='ctrl'>");
- html("<select name='ignorews' onchange='this.form.submit();'>");
- html_intoption(0, "include", ctx.qry.ignorews);
- html_intoption(1, "ignore", ctx.qry.ignorews);
- html("</select>");
- html("</td>");
- html("</tr><tr>");
- html("<td class='label'>mode:</td>");
- html("<td class='ctrl'>");
- html("<select name='ss' onchange='this.form.submit();'>");
- curr = ctx.qry.ssdiff;
- if (!curr && ctx.cfg.ssdiff)
- curr = 1;
- html_intoption(0, "unified", curr);
- html_intoption(1, "ssdiff", curr);
- html("</select></td></tr>");
- html("<tr><td/><td class='ctrl'>");
- html("<noscript><input type='submit' value='reload'/></noscript>");
- html("</td></tr></table>");
- html("</form>");
- html("</div>");
-}
-
-void cgit_print_diff(const char *new_rev, const char *old_rev,
- const char *prefix, int show_ctrls)
+void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefix)
{
enum object_type type;
unsigned long size;
@@ -398,9 +375,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
if ((ctx.qry.ssdiff && !ctx.cfg.ssdiff) || (!ctx.qry.ssdiff && ctx.cfg.ssdiff))
use_ssdiff = 1;
- if (show_ctrls)
- cgit_print_diff_ctrls();
-
+ print_ssdiff_link();
cgit_print_diffstat(old_rev_sha1, new_rev_sha1, prefix);
if (use_ssdiff) {