Fossil SCM
Since dynamically added CSS classes to hide elements are discarded on back/forward navigation, reset all diff toggle checkboxes to checked to match what is actually visible. An alternative approach is to find the unchecked diff toggles and reapply the CSS classes to hide the corresponding diff blocks.
Commit
4368a1c99256f5d2bf48acd47fdc21f4b3647c0744d700d530d275ec548ff622
Parent
e41214d25b0830d…
1 file changed
+10
-2
+10
-2
| --- src/fossil.diff.js | ||
| +++ src/fossil.diff.js | ||
| @@ -16,10 +16,20 @@ | ||
| 16 | 16 | btn.addEventListener('click', function(){ |
| 17 | 17 | diffElem.classList.toggle('hidden'); |
| 18 | 18 | }, false); |
| 19 | 19 | }; |
| 20 | 20 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 21 | + function resetToggles(){ | |
| 22 | + var cb = document.querySelectorAll( | |
| 23 | + 'input[type="checkbox"].diff-toggle:not(:checked)'); | |
| 24 | + for( var i=0; i<cb.length; i++ ) cb[i].checked = true; | |
| 25 | + } | |
| 26 | + if( window.requestIdleCallback ){ | |
| 27 | + window.requestIdleCallback(resetToggles); | |
| 28 | + }else{ | |
| 29 | + setTimeout(resetToggles); | |
| 30 | + } | |
| 21 | 31 | }); |
| 22 | 32 | |
| 23 | 33 | /* |
| 24 | 34 | ** Diff keyboard navigation shortcuts: |
| 25 | 35 | ** |
| @@ -29,12 +39,10 @@ | ||
| 29 | 39 | ** O - Show only previous diff, hide all others. |
| 30 | 40 | ** |
| 31 | 41 | ** Ideas and TODOs: |
| 32 | 42 | ** |
| 33 | 43 | ** o Documentation. |
| 34 | -** o Restore shown/hidden state on back/forward navigation (or simply reset | |
| 35 | -** shown/hidden state to show all). | |
| 36 | 44 | */ |
| 37 | 45 | (function(){ |
| 38 | 46 | window.addEventListener('load',function(){ |
| 39 | 47 | function btnScrollIntoView(e){ |
| 40 | 48 | //setTimeout(function(){ |
| 41 | 49 |
| --- src/fossil.diff.js | |
| +++ src/fossil.diff.js | |
| @@ -16,10 +16,20 @@ | |
| 16 | btn.addEventListener('click', function(){ |
| 17 | diffElem.classList.toggle('hidden'); |
| 18 | }, false); |
| 19 | }; |
| 20 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 21 | }); |
| 22 | |
| 23 | /* |
| 24 | ** Diff keyboard navigation shortcuts: |
| 25 | ** |
| @@ -29,12 +39,10 @@ | |
| 29 | ** O - Show only previous diff, hide all others. |
| 30 | ** |
| 31 | ** Ideas and TODOs: |
| 32 | ** |
| 33 | ** o Documentation. |
| 34 | ** o Restore shown/hidden state on back/forward navigation (or simply reset |
| 35 | ** shown/hidden state to show all). |
| 36 | */ |
| 37 | (function(){ |
| 38 | window.addEventListener('load',function(){ |
| 39 | function btnScrollIntoView(e){ |
| 40 | //setTimeout(function(){ |
| 41 |
| --- src/fossil.diff.js | |
| +++ src/fossil.diff.js | |
| @@ -16,10 +16,20 @@ | |
| 16 | btn.addEventListener('click', function(){ |
| 17 | diffElem.classList.toggle('hidden'); |
| 18 | }, false); |
| 19 | }; |
| 20 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 21 | function resetToggles(){ |
| 22 | var cb = document.querySelectorAll( |
| 23 | 'input[type="checkbox"].diff-toggle:not(:checked)'); |
| 24 | for( var i=0; i<cb.length; i++ ) cb[i].checked = true; |
| 25 | } |
| 26 | if( window.requestIdleCallback ){ |
| 27 | window.requestIdleCallback(resetToggles); |
| 28 | }else{ |
| 29 | setTimeout(resetToggles); |
| 30 | } |
| 31 | }); |
| 32 | |
| 33 | /* |
| 34 | ** Diff keyboard navigation shortcuts: |
| 35 | ** |
| @@ -29,12 +39,10 @@ | |
| 39 | ** O - Show only previous diff, hide all others. |
| 40 | ** |
| 41 | ** Ideas and TODOs: |
| 42 | ** |
| 43 | ** o Documentation. |
| 44 | */ |
| 45 | (function(){ |
| 46 | window.addEventListener('load',function(){ |
| 47 | function btnScrollIntoView(e){ |
| 48 | //setTimeout(function(){ |
| 49 |