Fossil SCM

Shortcut H to hop between the selected, current (check-out) and ticked entries.

florian 2022-08-04 03:56 timeline-keyboard-navigation
Commit 7703a5f7a37560260bc443c14479dafa83dbe499ef78267999e59234ad757de7
1 file changed +24 -1
+24 -1
--- src/graph.js
+++ src/graph.js
@@ -853,10 +853,22 @@
853853
function focusDefaultId(){
854854
var tn = document.querySelector('.timelineSelected .tl-nodemark') ||
855855
document.querySelector('.timelineCurrent .tl-nodemark');
856856
return tn ? tn.id : 'm1';
857857
}
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;
865
+ }
866
+ function focusTickedId(){
867
+ var nd = document.querySelector('.tl-node.sel');
868
+ return nd ? 'm' + nd.id.slice(3) : null;
869
+ }
858870
function focusFirstId(id){
859871
return 'm1';
860872
}
861873
function focusLastId(id){
862874
var el = document.getElementsByClassName('tl-nodemark');
@@ -930,10 +942,11 @@
930942
mSHIFT = 1<<13,
931943
kFRST = mSHIFT | 78 /* SHIFT+N */,
932944
kNEXT = 78 /* N */,
933945
kPREV = 77 /* M */,
934946
kLAST = mSHIFT | 77 /* SHIFT+M */,
947
+ kCYCL = 72 /* H */,
935948
kTICK = 188 /* , */,
936949
kCPYH = 66 /* B */,
937950
kCPYB = mSHIFT | 66 /* SHIFT+B */,
938951
kTMLN = 74 /* J */,
939952
kVIEW = 75 /* K */,
@@ -944,10 +957,11 @@
944957
switch( key ){
945958
case kFRST: dx = -2; break;
946959
case kNEXT: dx = -1; break;
947960
case kPREV: dx = +1; break;
948961
case kLAST: dx = +2; break;
962
+ case kCYCL: break;
949963
case kTICK: break;
950964
case kCPYH: break;
951965
case kCPYB: break;
952966
case kTMLN: break;
953967
case kVIEW: break;
@@ -962,11 +976,20 @@
962976
return;
963977
}
964978
document.cookie = 'fossil_timeline_kbnav=1;path=/';
965979
var id = focusCacheGet();
966980
if( id && dx==0 ){
967
- if( key==kTICK ){
981
+ if( key==kCYCL ){
982
+ var sel = focusSelectedId();
983
+ var cur = focusCurrentId();
984
+ var tik = focusTickedId();
985
+ if( id==sel ) id = cur || tik || sel;
986
+ else if( id==cur ) id = tik || sel || cur;
987
+ else if( id==tik ) id = sel || cur || tik;
988
+ else id = sel || cur || tik || id;
989
+ }
990
+ else if( key==kTICK ){
968991
var gn = document.getElementById('tln'+id.slice(1));
969992
if( gn ) gn.click();
970993
}
971994
else if( key==kCPYH || key==kCPYB ){
972995
var ri = timelineGetRowInfo(id);
973996
--- src/graph.js
+++ src/graph.js
@@ -853,10 +853,22 @@
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 focusFirstId(id){
859 return 'm1';
860 }
861 function focusLastId(id){
862 var el = document.getElementsByClassName('tl-nodemark');
@@ -930,10 +942,11 @@
930 mSHIFT = 1<<13,
931 kFRST = mSHIFT | 78 /* SHIFT+N */,
932 kNEXT = 78 /* N */,
933 kPREV = 77 /* M */,
934 kLAST = mSHIFT | 77 /* SHIFT+M */,
 
935 kTICK = 188 /* , */,
936 kCPYH = 66 /* B */,
937 kCPYB = mSHIFT | 66 /* SHIFT+B */,
938 kTMLN = 74 /* J */,
939 kVIEW = 75 /* K */,
@@ -944,10 +957,11 @@
944 switch( key ){
945 case kFRST: dx = -2; break;
946 case kNEXT: dx = -1; break;
947 case kPREV: dx = +1; break;
948 case kLAST: dx = +2; break;
 
949 case kTICK: break;
950 case kCPYH: break;
951 case kCPYB: break;
952 case kTMLN: break;
953 case kVIEW: break;
@@ -962,11 +976,20 @@
962 return;
963 }
964 document.cookie = 'fossil_timeline_kbnav=1;path=/';
965 var id = focusCacheGet();
966 if( id && dx==0 ){
967 if( key==kTICK ){
 
 
 
 
 
 
 
 
 
968 var gn = document.getElementById('tln'+id.slice(1));
969 if( gn ) gn.click();
970 }
971 else if( key==kCPYH || key==kCPYB ){
972 var ri = timelineGetRowInfo(id);
973
--- src/graph.js
+++ src/graph.js
@@ -853,10 +853,22 @@
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;
865 }
866 function focusTickedId(){
867 var nd = document.querySelector('.tl-node.sel');
868 return nd ? 'm' + nd.id.slice(3) : null;
869 }
870 function focusFirstId(id){
871 return 'm1';
872 }
873 function focusLastId(id){
874 var el = document.getElementsByClassName('tl-nodemark');
@@ -930,10 +942,11 @@
942 mSHIFT = 1<<13,
943 kFRST = mSHIFT | 78 /* SHIFT+N */,
944 kNEXT = 78 /* N */,
945 kPREV = 77 /* M */,
946 kLAST = mSHIFT | 77 /* SHIFT+M */,
947 kCYCL = 72 /* H */,
948 kTICK = 188 /* , */,
949 kCPYH = 66 /* B */,
950 kCPYB = mSHIFT | 66 /* SHIFT+B */,
951 kTMLN = 74 /* J */,
952 kVIEW = 75 /* K */,
@@ -944,10 +957,11 @@
957 switch( key ){
958 case kFRST: dx = -2; break;
959 case kNEXT: dx = -1; break;
960 case kPREV: dx = +1; break;
961 case kLAST: dx = +2; break;
962 case kCYCL: break;
963 case kTICK: break;
964 case kCPYH: break;
965 case kCPYB: break;
966 case kTMLN: break;
967 case kVIEW: break;
@@ -962,11 +976,20 @@
976 return;
977 }
978 document.cookie = 'fossil_timeline_kbnav=1;path=/';
979 var id = focusCacheGet();
980 if( id && dx==0 ){
981 if( key==kCYCL ){
982 var sel = focusSelectedId();
983 var cur = focusCurrentId();
984 var tik = focusTickedId();
985 if( id==sel ) id = cur || tik || sel;
986 else if( id==cur ) id = tik || sel || cur;
987 else if( id==tik ) id = sel || cur || tik;
988 else id = sel || cur || tik || id;
989 }
990 else if( key==kTICK ){
991 var gn = document.getElementById('tln'+id.slice(1));
992 if( gn ) gn.click();
993 }
994 else if( key==kCPYH || key==kCPYB ){
995 var ri = timelineGetRowInfo(id);
996

Keyboard Shortcuts

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