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.

florian 2022-09-29 11:30 diff-keyboard-navigation
Commit 4368a1c99256f5d2bf48acd47fdc21f4b3647c0744d700d530d275ec548ff622
1 file changed +10 -2
--- src/fossil.diff.js
+++ src/fossil.diff.js
@@ -16,10 +16,20 @@
1616
btn.addEventListener('click', function(){
1717
diffElem.classList.toggle('hidden');
1818
}, false);
1919
};
2020
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
+ }
2131
});
2232
2333
/*
2434
** Diff keyboard navigation shortcuts:
2535
**
@@ -29,12 +39,10 @@
2939
** O - Show only previous diff, hide all others.
3040
**
3141
** Ideas and TODOs:
3242
**
3343
** o Documentation.
34
-** o Restore shown/hidden state on back/forward navigation (or simply reset
35
-** shown/hidden state to show all).
3644
*/
3745
(function(){
3846
window.addEventListener('load',function(){
3947
function btnScrollIntoView(e){
4048
//setTimeout(function(){
4149
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button