Index: src/builtin.c ================================================================== --- src/builtin.c +++ src/builtin.c @@ -704,10 +704,11 @@ /* This list ordering isn't strictly important. */ {"confirmer", 0, 0}, {"copybutton", 0, "dom\0"}, {"dom", 0, 0}, {"fetch", 0, 0}, + {"info-diff", 0, "dom\0"}, {"numbered-lines", 0, "popupwidget\0copybutton\0"}, {"pikchr", 0, "dom\0"}, {"popupwidget", 0, "dom\0"}, {"storage", 0, 0}, {"tabs", 0, "dom\0"} Index: src/default.css ================================================================== --- src/default.css +++ src/default.css @@ -1763,10 +1763,13 @@ body.chat #chat-drop-details img { max-width: 45%; max-height: 45%; } +input[type="checkbox"].diff-toggle { + float: right; +} /* Objects in the "desktoponly" class are invisible on mobile */ @media screen and (max-width: 600px) { .desktoponly { display: none; } ADDED src/fossil.info-diff.js Index: src/fossil.info-diff.js ================================================================== --- /dev/null +++ src/fossil.info-diff.js @@ -0,0 +1,14 @@ +"use strict"; +window.fossil.onPageLoad(function(){ + const F = window.fossil, D = F.dom; + const addToggle = function(diffElem){ + const sib = diffElem.previousElementSibling, + btn = sib ? D.addClass(D.checkbox(true), 'diff-toggle') : 0; + if(!sib) return; + D.append(sib,btn); + btn.addEventListener('click', function(){ + diffElem.classList.toggle('hidden'); + }, false); + }; + document.querySelectorAll('pre.udiff, table.sbsdiffcols').forEach(addToggle); +}); Index: src/info.c ================================================================== --- src/info.c +++ src/info.c @@ -940,10 +940,11 @@ append_file_change_line(zUuid, zName, zOld, zNew, zOldName, diffFlags,pRe,mperm); } db_finalize(&q3); append_diff_javascript(diffType==2); + builtin_fossil_js_bundle_or("info-diff",NULL); cookie_render(); style_finish_page(); } /* Index: src/main.mk ================================================================== --- src/main.mk +++ src/main.mk @@ -225,10 +225,11 @@ $(SRCDIR)/fossil.bootstrap.js \ $(SRCDIR)/fossil.confirmer.js \ $(SRCDIR)/fossil.copybutton.js \ $(SRCDIR)/fossil.dom.js \ $(SRCDIR)/fossil.fetch.js \ + $(SRCDIR)/fossil.info-diff.js \ $(SRCDIR)/fossil.numbered-lines.js \ $(SRCDIR)/fossil.page.fileedit.js \ $(SRCDIR)/fossil.page.forumpost.js \ $(SRCDIR)/fossil.page.pikchrshow.js \ $(SRCDIR)/fossil.page.wikiedit.js \ Index: win/Makefile.mingw ================================================================== --- win/Makefile.mingw +++ win/Makefile.mingw @@ -634,10 +634,11 @@ $(SRCDIR)/fossil.bootstrap.js \ $(SRCDIR)/fossil.confirmer.js \ $(SRCDIR)/fossil.copybutton.js \ $(SRCDIR)/fossil.dom.js \ $(SRCDIR)/fossil.fetch.js \ + $(SRCDIR)/fossil.info-diff.js \ $(SRCDIR)/fossil.numbered-lines.js \ $(SRCDIR)/fossil.page.fileedit.js \ $(SRCDIR)/fossil.page.forumpost.js \ $(SRCDIR)/fossil.page.pikchrshow.js \ $(SRCDIR)/fossil.page.wikiedit.js \ Index: win/Makefile.msc ================================================================== --- win/Makefile.msc +++ win/Makefile.msc @@ -559,10 +559,11 @@ "$(SRCDIR)\fossil.bootstrap.js" \ "$(SRCDIR)\fossil.confirmer.js" \ "$(SRCDIR)\fossil.copybutton.js" \ "$(SRCDIR)\fossil.dom.js" \ "$(SRCDIR)\fossil.fetch.js" \ + "$(SRCDIR)\fossil.info-diff.js" \ "$(SRCDIR)\fossil.numbered-lines.js" \ "$(SRCDIR)\fossil.page.fileedit.js" \ "$(SRCDIR)\fossil.page.forumpost.js" \ "$(SRCDIR)\fossil.page.pikchrshow.js" \ "$(SRCDIR)\fossil.page.wikiedit.js" \ @@ -1164,10 +1165,11 @@ echo "$(SRCDIR)\fossil.bootstrap.js" >> $@ echo "$(SRCDIR)\fossil.confirmer.js" >> $@ echo "$(SRCDIR)\fossil.copybutton.js" >> $@ echo "$(SRCDIR)\fossil.dom.js" >> $@ echo "$(SRCDIR)\fossil.fetch.js" >> $@ + echo "$(SRCDIR)\fossil.info-diff.js" >> $@ echo "$(SRCDIR)\fossil.numbered-lines.js" >> $@ echo "$(SRCDIR)\fossil.page.fileedit.js" >> $@ echo "$(SRCDIR)\fossil.page.forumpost.js" >> $@ echo "$(SRCDIR)\fossil.page.pikchrshow.js" >> $@ echo "$(SRCDIR)\fossil.page.wikiedit.js" >> $@