Fossil SCM

Change the "untick" and "copy hash/branch" handlers to not activate keyboard navigation mode, i.e. "untick" is also available in combination with mouse scrolling, and "copy hash/branch" requires a focused entry, instead of focusing an entry without copying its data.

florian 2022-08-04 04:25 timeline-keyboard-navigation
Commit 1d5e6e3cae2f2d502dc6417177878362a06312ef2c28d8980d7c4a6f8780dbf4
1 file changed +20 -15
+20 -15
--- src/graph.js
+++ src/graph.js
@@ -968,11 +968,30 @@
968968
case kTMLN: break;
969969
case kVIEW: break;
970970
case kDONE: break;
971971
default: return;
972972
}
973
- if( key==kDONE ){
973
+ if( key==kUNTK ){
974
+ var tid = focusTickedId();
975
+ if( tid ){
976
+ var gn = document.getElementById('tln'+tid.slice(1));
977
+ if( gn ) gn.click();
978
+ }
979
+ return;
980
+ }
981
+ else if( key==kCPYH || key==kCPYB ){
982
+ var fid = focusCacheGet();
983
+ if( fid ){
984
+ var ri = timelineGetRowInfo(fid);
985
+ if( ri ){
986
+ copyTextToClipboard(
987
+ key==kCPYH ? ri.hash.slice(0,ri.hashdigits) : ri.branch);
988
+ }
989
+ }
990
+ return;
991
+ }
992
+ else if( key==kDONE ){
974993
focusCacheSet(null);
975994
focusVisualize(null,false);
976995
document.cookie =
977996
'fossil_timeline_kbnav=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/';
978997
return;
@@ -991,24 +1010,10 @@
9911010
}
9921011
else if( key==kTICK ){
9931012
var gn = document.getElementById('tln'+id.slice(1));
9941013
if( gn ) gn.click();
9951014
}
996
- else if( key==kUNTK ){
997
- var tid = focusTickedId();
998
- if( tid ){
999
- var gn = document.getElementById('tln'+tid.slice(1));
1000
- if( gn ) gn.click();
1001
- }
1002
- }
1003
- else if( key==kCPYH || key==kCPYB ){
1004
- var ri = timelineGetRowInfo(id);
1005
- if( ri ){
1006
- copyTextToClipboard(
1007
- key==kCPYH ? ri.hash.slice(0,ri.hashdigits) : ri.branch);
1008
- }
1009
- }
10101015
else/* if( key==kTMLN || key==kVIEW )*/{
10111016
var ri = timelineGetRowInfo(id);
10121017
if( ri ){
10131018
var page = key==kVIEW ? '/info/' : '/timeline?c=';
10141019
var href = ri.baseurl + page + encodeURIComponent(ri.hash);
10151020
--- src/graph.js
+++ src/graph.js
@@ -968,11 +968,30 @@
968 case kTMLN: break;
969 case kVIEW: break;
970 case kDONE: break;
971 default: return;
972 }
973 if( key==kDONE ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
974 focusCacheSet(null);
975 focusVisualize(null,false);
976 document.cookie =
977 'fossil_timeline_kbnav=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/';
978 return;
@@ -991,24 +1010,10 @@
991 }
992 else if( key==kTICK ){
993 var gn = document.getElementById('tln'+id.slice(1));
994 if( gn ) gn.click();
995 }
996 else if( key==kUNTK ){
997 var tid = focusTickedId();
998 if( tid ){
999 var gn = document.getElementById('tln'+tid.slice(1));
1000 if( gn ) gn.click();
1001 }
1002 }
1003 else if( key==kCPYH || key==kCPYB ){
1004 var ri = timelineGetRowInfo(id);
1005 if( ri ){
1006 copyTextToClipboard(
1007 key==kCPYH ? ri.hash.slice(0,ri.hashdigits) : ri.branch);
1008 }
1009 }
1010 else/* if( key==kTMLN || key==kVIEW )*/{
1011 var ri = timelineGetRowInfo(id);
1012 if( ri ){
1013 var page = key==kVIEW ? '/info/' : '/timeline?c=';
1014 var href = ri.baseurl + page + encodeURIComponent(ri.hash);
1015
--- src/graph.js
+++ src/graph.js
@@ -968,11 +968,30 @@
968 case kTMLN: break;
969 case kVIEW: break;
970 case kDONE: break;
971 default: return;
972 }
973 if( key==kUNTK ){
974 var tid = focusTickedId();
975 if( tid ){
976 var gn = document.getElementById('tln'+tid.slice(1));
977 if( gn ) gn.click();
978 }
979 return;
980 }
981 else if( key==kCPYH || key==kCPYB ){
982 var fid = focusCacheGet();
983 if( fid ){
984 var ri = timelineGetRowInfo(fid);
985 if( ri ){
986 copyTextToClipboard(
987 key==kCPYH ? ri.hash.slice(0,ri.hashdigits) : ri.branch);
988 }
989 }
990 return;
991 }
992 else if( key==kDONE ){
993 focusCacheSet(null);
994 focusVisualize(null,false);
995 document.cookie =
996 'fossil_timeline_kbnav=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/';
997 return;
@@ -991,24 +1010,10 @@
1010 }
1011 else if( key==kTICK ){
1012 var gn = document.getElementById('tln'+id.slice(1));
1013 if( gn ) gn.click();
1014 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1015 else/* if( key==kTMLN || key==kVIEW )*/{
1016 var ri = timelineGetRowInfo(id);
1017 if( ri ){
1018 var page = key==kVIEW ? '/info/' : '/timeline?c=';
1019 var href = ri.baseurl + page + encodeURIComponent(ri.hash);
1020

Keyboard Shortcuts

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