Fossil SCM

Enhance the H shortcut to consider the secondary selection on the /vdiff page as a waypoint.

florian 2022-08-04 06:09 timeline-keyboard-navigation
Commit 0c024627dc03fc23fce442aa6089fcf8e87f8a18bea2f2f4bb31809b4995bf8d
1 file changed +16 -7
+16 -7
--- src/graph.js
+++ src/graph.js
@@ -849,16 +849,23 @@
849849
** something similar to the scrollToSelected() function in this source file.
850850
*/
851851
(function(){
852852
window.addEventListener('load',function(){
853853
function focusDefaultId(){
854
- var tn = document.querySelector('.timelineSelected .tl-nodemark') ||
855
- document.querySelector('.timelineCurrent .tl-nodemark');
854
+ var tn = document.querySelector(
855
+ '.timelineSelected:not(.timelineSecondary) .tl-nodemark')
856
+ || document.querySelector('.timelineSelected .tl-nodemark')
857
+ || document.querySelector('.timelineCurrent .tl-nodemark');
856858
return tn ? tn.id : 'm1';
857859
}
858860
function focusSelectedId(){
859
- var tn = document.querySelector('.timelineSelected .tl-nodemark');
861
+ var tn = document.querySelector(
862
+ '.timelineSelected:not(.timelineSecondary) .tl-nodemark');
863
+ return tn ? tn.id : null;
864
+ }
865
+ function focus2ndSelectedId(){
866
+ var tn = document.querySelector('.timelineSecondary .tl-nodemark');
860867
return tn ? tn.id : null;
861868
}
862869
function focusCurrentId(){
863870
var tn = document.querySelector('.timelineCurrent .tl-nodemark');
864871
return tn ? tn.id : null;
@@ -999,16 +1006,18 @@
9991006
document.cookie = 'fossil_timeline_kbnav=1;path=/';
10001007
var id = focusCacheGet();
10011008
if( id && dx==0 ){
10021009
if( key==kCYCL ){
10031010
var sel = focusSelectedId();
1011
+ var sl2 = focus2ndSelectedId();
10041012
var cur = focusCurrentId();
10051013
var tik = focusTickedId();
1006
- if( id==sel ) id = cur || tik || sel;
1007
- else if( id==cur ) id = tik || sel || cur;
1008
- else if( id==tik ) id = sel || cur || tik;
1009
- else id = sel || cur || tik || id;
1014
+ if( id==sel ) id = sl2 || cur || tik || sel;
1015
+ else if( id==sl2 ) id = cur || tik || sel || sl2;
1016
+ else if( id==cur ) id = tik || sel || sl2 || cur;
1017
+ else if( id==tik ) id = sel || sl2 || cur || tik;
1018
+ else id = sel || sl2 || cur || tik || id;
10101019
}
10111020
else if( key==kTICK ){
10121021
var gn = document.getElementById('tln'+id.slice(1));
10131022
if( gn ) gn.click();
10141023
}
10151024
--- src/graph.js
+++ src/graph.js
@@ -849,16 +849,23 @@
849 ** something similar to the scrollToSelected() function in this source file.
850 */
851 (function(){
852 window.addEventListener('load',function(){
853 function focusDefaultId(){
854 var tn = document.querySelector('.timelineSelected .tl-nodemark') ||
855 document.querySelector('.timelineCurrent .tl-nodemark');
 
 
856 return tn ? tn.id : 'm1';
857 }
858 function focusSelectedId(){
859 var tn = document.querySelector('.timelineSelected .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;
@@ -999,16 +1006,18 @@
999 document.cookie = 'fossil_timeline_kbnav=1;path=/';
1000 var id = focusCacheGet();
1001 if( id && dx==0 ){
1002 if( key==kCYCL ){
1003 var sel = focusSelectedId();
 
1004 var cur = focusCurrentId();
1005 var tik = focusTickedId();
1006 if( id==sel ) id = cur || tik || sel;
1007 else if( id==cur ) id = tik || sel || cur;
1008 else if( id==tik ) id = sel || cur || tik;
1009 else id = sel || cur || tik || id;
 
1010 }
1011 else if( key==kTICK ){
1012 var gn = document.getElementById('tln'+id.slice(1));
1013 if( gn ) gn.click();
1014 }
1015
--- src/graph.js
+++ src/graph.js
@@ -849,16 +849,23 @@
849 ** something similar to the scrollToSelected() function in this source file.
850 */
851 (function(){
852 window.addEventListener('load',function(){
853 function focusDefaultId(){
854 var tn = document.querySelector(
855 '.timelineSelected:not(.timelineSecondary) .tl-nodemark')
856 || document.querySelector('.timelineSelected .tl-nodemark')
857 || document.querySelector('.timelineCurrent .tl-nodemark');
858 return tn ? tn.id : 'm1';
859 }
860 function focusSelectedId(){
861 var tn = document.querySelector(
862 '.timelineSelected:not(.timelineSecondary) .tl-nodemark');
863 return tn ? tn.id : null;
864 }
865 function focus2ndSelectedId(){
866 var tn = document.querySelector('.timelineSecondary .tl-nodemark');
867 return tn ? tn.id : null;
868 }
869 function focusCurrentId(){
870 var tn = document.querySelector('.timelineCurrent .tl-nodemark');
871 return tn ? tn.id : null;
@@ -999,16 +1006,18 @@
1006 document.cookie = 'fossil_timeline_kbnav=1;path=/';
1007 var id = focusCacheGet();
1008 if( id && dx==0 ){
1009 if( key==kCYCL ){
1010 var sel = focusSelectedId();
1011 var sl2 = focus2ndSelectedId();
1012 var cur = focusCurrentId();
1013 var tik = focusTickedId();
1014 if( id==sel ) id = sl2 || cur || tik || sel;
1015 else if( id==sl2 ) id = cur || tik || sel || sl2;
1016 else if( id==cur ) id = tik || sel || sl2 || cur;
1017 else if( id==tik ) id = sel || sl2 || cur || tik;
1018 else id = sel || sl2 || cur || tik || id;
1019 }
1020 else if( key==kTICK ){
1021 var gn = document.getElementById('tln'+id.slice(1));
1022 if( gn ) gn.click();
1023 }
1024

Keyboard Shortcuts

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