aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tim Chen <timchen1@gmail.com>2012-01-04 01:02:14 (JST)
committerGravatar Lars Hjemli <hjemli@gmail.com>2012-01-04 01:02:14 (JST)
commitf2ced535e9f2c2ada7f184735a07a1190a9d810f (patch)
tree0272646e2e0124737d637c0d5e7a858b4ba8f003
parent0b6a716d1b9f18e8cc00940a7962e542b9358238 (diff)
downloadcgit-f2ced535e9f2c2ada7f184735a07a1190a9d810f.zip
cgit-f2ced535e9f2c2ada7f184735a07a1190a9d810f.tar.gz
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.c1
-rw-r--r--cgit.h1
-rw-r--r--ui-diff.c3
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)
281 ctx.qry.period = xstrdup(value); 281 ctx.qry.period = xstrdup(value);
282 } else if (!strcmp(name, "ss")) { 282 } else if (!strcmp(name, "ss")) {
283 ctx.qry.ssdiff = atoi(value); 283 ctx.qry.ssdiff = atoi(value);
284 ctx.qry.has_ssdiff = 1;
284 } else if (!strcmp(name, "all")) { 285 } else if (!strcmp(name, "all")) {
285 ctx.qry.show_all = atoi(value); 286 ctx.qry.show_all = atoi(value);
286 } else if (!strcmp(name, "context")) { 287 } 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 {
133struct cgit_query { 133struct cgit_query {
134 int has_symref; 134 int has_symref;
135 int has_sha1; 135 int has_sha1;
136 int has_ssdiff;
136 char *raw; 137 char *raw;
137 char *repo; 138 char *repo;
138 char *page; 139 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
372 } 372 }
373 } 373 }
374 374
375 if ((ctx.qry.ssdiff && !ctx.cfg.ssdiff) || (!ctx.qry.ssdiff && ctx.cfg.ssdiff)) 375 use_ssdiff = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff;
376 use_ssdiff = 1;
377 376
378 print_ssdiff_link(); 377 print_ssdiff_link();
379 cgit_print_diffstat(old_rev_sha1, new_rev_sha1, prefix); 378 cgit_print_diffstat(old_rev_sha1, new_rev_sha1, prefix);