Fossil SCM

Swap semantics of the "primary" and "secondary" highlighted entries to improve selection of the default focused entry. The "secondary" corresponds to the "To:" entry on /vdiff pages and hance is the last focused entry, so should also be the default when returning to /timeline both by keyboard shortcut or the browser "backwards" command. Thanks @rouilj for spotting this!

florian 2022-08-11 06:12 timeline-keyboard-navigation
Commit 63c1be8c316702c6e288962c173f7d47e50cdf4e65315273f55d36a57279dee0
1 file changed +11 -6
+11 -6
--- src/graph.js
+++ src/graph.js
@@ -841,24 +841,29 @@
841841
** o kFRST, kLAST: check if the previous/next page should be opened if focus is
842842
** already at the top/bottom.
843843
*/
844844
(function(){
845845
window.addEventListener('load',function(){
846
+// "Primary" (1) and "secondary" (2) selections swapped compared to CSS classes:
847
+// (1) .timelineSecondary →
848
+// /vdiff?to=, /timeline?sel2=
849
+// (2) .timelineSelected:not(.timelineSecondary) →
850
+// /vdiff?from=, /timeline?c=, /timeline?sel1=
846851
function focusDefaultId(){
847
- var tn = document.querySelector(
848
- '.timelineSelected:not(.timelineSecondary) .tl-nodemark')
849
- || document.querySelector('.timelineSelected .tl-nodemark')
852
+ var tn = document.querySelector('.timelineSecondary .tl-nodemark')
853
+ || document.querySelector(
854
+ '.timelineSelected:not(.timelineSecondary) .tl-nodemark')
850855
|| document.querySelector('.timelineCurrent .tl-nodemark');
851856
return tn ? tn.id : 'm1';
852857
}
853858
function focusSelectedId(){
854
- var tn = document.querySelector(
855
- '.timelineSelected:not(.timelineSecondary) .tl-nodemark');
859
+ var tn = document.querySelector('.timelineSecondary .tl-nodemark');
856860
return tn ? tn.id : null;
857861
}
858862
function focus2ndSelectedId(){
859
- var tn = document.querySelector('.timelineSecondary .tl-nodemark');
863
+ var tn = document.querySelector(
864
+ '.timelineSelected:not(.timelineSecondary) .tl-nodemark');
860865
return tn ? tn.id : null;
861866
}
862867
function focusCurrentId(){
863868
var tn = document.querySelector('.timelineCurrent .tl-nodemark');
864869
return tn ? tn.id : null;
865870
--- src/graph.js
+++ src/graph.js
@@ -841,24 +841,29 @@
841 ** o kFRST, kLAST: check if the previous/next page should be opened if focus is
842 ** already at the top/bottom.
843 */
844 (function(){
845 window.addEventListener('load',function(){
 
 
 
 
 
846 function focusDefaultId(){
847 var tn = document.querySelector(
848 '.timelineSelected:not(.timelineSecondary) .tl-nodemark')
849 || document.querySelector('.timelineSelected .tl-nodemark')
850 || document.querySelector('.timelineCurrent .tl-nodemark');
851 return tn ? tn.id : 'm1';
852 }
853 function focusSelectedId(){
854 var tn = document.querySelector(
855 '.timelineSelected:not(.timelineSecondary) .tl-nodemark');
856 return tn ? tn.id : null;
857 }
858 function focus2ndSelectedId(){
859 var tn = document.querySelector('.timelineSecondary .tl-nodemark');
 
860 return tn ? tn.id : null;
861 }
862 function focusCurrentId(){
863 var tn = document.querySelector('.timelineCurrent .tl-nodemark');
864 return tn ? tn.id : null;
865
--- src/graph.js
+++ src/graph.js
@@ -841,24 +841,29 @@
841 ** o kFRST, kLAST: check if the previous/next page should be opened if focus is
842 ** already at the top/bottom.
843 */
844 (function(){
845 window.addEventListener('load',function(){
846 // "Primary" (1) and "secondary" (2) selections swapped compared to CSS classes:
847 // (1) .timelineSecondary →
848 // /vdiff?to=, /timeline?sel2=
849 // (2) .timelineSelected:not(.timelineSecondary) →
850 // /vdiff?from=, /timeline?c=, /timeline?sel1=
851 function focusDefaultId(){
852 var tn = document.querySelector('.timelineSecondary .tl-nodemark')
853 || document.querySelector(
854 '.timelineSelected:not(.timelineSecondary) .tl-nodemark')
855 || document.querySelector('.timelineCurrent .tl-nodemark');
856 return tn ? tn.id : 'm1';
857 }
858 function focusSelectedId(){
859 var tn = document.querySelector('.timelineSecondary .tl-nodemark');
 
860 return tn ? tn.id : null;
861 }
862 function focus2ndSelectedId(){
863 var tn = document.querySelector(
864 '.timelineSelected:not(.timelineSecondary) .tl-nodemark');
865 return tn ? tn.id : null;
866 }
867 function focusCurrentId(){
868 var tn = document.querySelector('.timelineCurrent .tl-nodemark');
869 return tn ? tn.id : null;
870

Keyboard Shortcuts

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