Fossil SCM
Fix the shortcut handler to cycle between selected, check-out and ticked entries getting stuck, and give highest priority to ticked entries.
Commit
b6a656b520e6c7a4da57e1425e5d07d753ebb0a6e4b1f032e1679c33c5053197
Parent
33f9315d44afd46…
1 file changed
+27
-9
+27
-9
| --- src/graph.js | ||
| +++ src/graph.js | ||
| @@ -1069,19 +1069,37 @@ | ||
| 1069 | 1069 | } |
| 1070 | 1070 | focusCookieInit(); |
| 1071 | 1071 | var id = focusCacheGet(); |
| 1072 | 1072 | if( id && dx==0 ){ |
| 1073 | 1073 | if( key==kCYCL ){ |
| 1074 | - var sel = focusSelectedId(); | |
| 1075 | - var sl2 = focus2ndSelectedId(); | |
| 1076 | - var cur = focusCurrentId(); | |
| 1077 | - var tik = focusTickedId(); | |
| 1078 | - if( id==sel ) id = sl2 || cur || tik || sel; | |
| 1079 | - else if( id==sl2 ) id = cur || tik || sel || sl2; | |
| 1080 | - else if( id==cur ) id = tik || sel || sl2 || cur; | |
| 1081 | - else if( id==tik ) id = sel || sl2 || cur || tik; | |
| 1082 | - else id = sel || sl2 || cur || tik || id; | |
| 1074 | + function uniqIds(){ | |
| 1075 | + var a = Array.prototype.slice.call(arguments,0), k=[], v=[]; | |
| 1076 | + for( var i=0; i<a.length; i++ ){ | |
| 1077 | + if( a[i] && !(a[i] in k) ){ | |
| 1078 | + k[a[i]] = 1; | |
| 1079 | + v.push(a[i]); | |
| 1080 | + } | |
| 1081 | + } | |
| 1082 | + return v; | |
| 1083 | + } | |
| 1084 | + var ids = uniqIds( | |
| 1085 | + focusTickedId(), | |
| 1086 | + focusSelectedId(), | |
| 1087 | + focus2ndSelectedId(), | |
| 1088 | + focusCurrentId() | |
| 1089 | + ); | |
| 1090 | + if( ids.length>1 ){ | |
| 1091 | + var m = 0; | |
| 1092 | + for( var i=0; i<ids.length; i++ ){ | |
| 1093 | + if( id==ids[i] ){ | |
| 1094 | + m = i<ids.length-1 ? i+1 : 0; | |
| 1095 | + break; | |
| 1096 | + } | |
| 1097 | + } | |
| 1098 | + id = ids[m]; | |
| 1099 | + } | |
| 1100 | + else if( ids.length==1 ) id = ids[0]; | |
| 1083 | 1101 | } |
| 1084 | 1102 | else if( key==kTICK ){ |
| 1085 | 1103 | var gn = document.getElementById('tln'+id.slice(1)); |
| 1086 | 1104 | if( gn ) gn.click(); |
| 1087 | 1105 | } |
| 1088 | 1106 |
| --- src/graph.js | |
| +++ src/graph.js | |
| @@ -1069,19 +1069,37 @@ | |
| 1069 | } |
| 1070 | focusCookieInit(); |
| 1071 | var id = focusCacheGet(); |
| 1072 | if( id && dx==0 ){ |
| 1073 | if( key==kCYCL ){ |
| 1074 | var sel = focusSelectedId(); |
| 1075 | var sl2 = focus2ndSelectedId(); |
| 1076 | var cur = focusCurrentId(); |
| 1077 | var tik = focusTickedId(); |
| 1078 | if( id==sel ) id = sl2 || cur || tik || sel; |
| 1079 | else if( id==sl2 ) id = cur || tik || sel || sl2; |
| 1080 | else if( id==cur ) id = tik || sel || sl2 || cur; |
| 1081 | else if( id==tik ) id = sel || sl2 || cur || tik; |
| 1082 | else id = sel || sl2 || cur || tik || id; |
| 1083 | } |
| 1084 | else if( key==kTICK ){ |
| 1085 | var gn = document.getElementById('tln'+id.slice(1)); |
| 1086 | if( gn ) gn.click(); |
| 1087 | } |
| 1088 |
| --- src/graph.js | |
| +++ src/graph.js | |
| @@ -1069,19 +1069,37 @@ | |
| 1069 | } |
| 1070 | focusCookieInit(); |
| 1071 | var id = focusCacheGet(); |
| 1072 | if( id && dx==0 ){ |
| 1073 | if( key==kCYCL ){ |
| 1074 | function uniqIds(){ |
| 1075 | var a = Array.prototype.slice.call(arguments,0), k=[], v=[]; |
| 1076 | for( var i=0; i<a.length; i++ ){ |
| 1077 | if( a[i] && !(a[i] in k) ){ |
| 1078 | k[a[i]] = 1; |
| 1079 | v.push(a[i]); |
| 1080 | } |
| 1081 | } |
| 1082 | return v; |
| 1083 | } |
| 1084 | var ids = uniqIds( |
| 1085 | focusTickedId(), |
| 1086 | focusSelectedId(), |
| 1087 | focus2ndSelectedId(), |
| 1088 | focusCurrentId() |
| 1089 | ); |
| 1090 | if( ids.length>1 ){ |
| 1091 | var m = 0; |
| 1092 | for( var i=0; i<ids.length; i++ ){ |
| 1093 | if( id==ids[i] ){ |
| 1094 | m = i<ids.length-1 ? i+1 : 0; |
| 1095 | break; |
| 1096 | } |
| 1097 | } |
| 1098 | id = ids[m]; |
| 1099 | } |
| 1100 | else if( ids.length==1 ) id = ids[0]; |
| 1101 | } |
| 1102 | else if( key==kTICK ){ |
| 1103 | var gn = document.getElementById('tln'+id.slice(1)); |
| 1104 | if( gn ) gn.click(); |
| 1105 | } |
| 1106 |