diff options
author | Tim Chen <timchen1@gmail.com> | 2012-01-03 16:02:14 +0000 |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2012-01-03 16:02:14 +0000 |
commit | f2ced535e9f2c2ada7f184735a07a1190a9d810f (patch) | |
tree | 0272646e2e0124737d637c0d5e7a858b4ba8f003 | |
parent | ui-log.c: do not show remote heads if enable-remote-branches=0 (diff) | |
download | cgit-pink-f2ced535e9f2c2ada7f184735a07a1190a9d810f.tar.gz cgit-pink-f2ced535e9f2c2ada7f184735a07a1190a9d810f.zip |
Fix diff mode switching when side-by-side-diffs=1
When side-by-side-diffs=1 was set in cgitrc, specyfing 'ss=0' in the query- string would not switch to unified diffs. This patch fixes the issue by introducing a separate variable to track the occurrence of "ss" in the querystring.
-rw-r--r-- | cgit.c | 1 | ||||
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | ui-diff.c | 3 |
3 files changed, 3 insertions, 2 deletions
diff --git a/cgit.c b/cgit.c index 5259f56..435ce5a 100644 --- a/cgit.c +++ b/cgit.c @@ -281,6 +281,7 @@ static void querystring_cb(const char *name, const char *value) ctx.qry.period = xstrdup(value); } else if (!strcmp(name, "ss")) { ctx.qry.ssdiff = atoi(value); + ctx.qry.has_ssdiff = 1; } else if (!strcmp(name, "all")) { ctx.qry.show_all = atoi(value); } else if (!strcmp(name, "context")) { diff --git a/cgit.h b/cgit.h index b5f00fc..63847ff 100644 --- a/cgit.h +++ b/cgit.h @@ -133,6 +133,7 @@ struct reflist { struct cgit_query { int has_symref; int has_sha1; + int has_ssdiff; char *raw; char *repo; char *page; diff --git a/ui-diff.c b/ui-diff.c index 383a534..f8782df 100644 --- a/ui-diff.c +++ b/ui-diff.c @@ -372,8 +372,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefi } } - if ((ctx.qry.ssdiff && !ctx.cfg.ssdiff) || (!ctx.qry.ssdiff && ctx.cfg.ssdiff)) - use_ssdiff = 1; + use_ssdiff = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff; print_ssdiff_link(); cgit_print_diffstat(old_rev_sha1, new_rev_sha1, prefix); |