From 446089a8d3fcc6e7911257cc6c4daa9e1ae2c8c8 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 18 Nov 2022 10:28:25 +1100 Subject: [PATCH] fix(windows): arrow keys need to select next/prev item in options tab Fixes #7750. --- windows/src/desktop/kmshell/xml/config.js | 17 ++++++++++------- .../src/desktop/kmshell/xml/keyman_options.xsl | 6 +++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/windows/src/desktop/kmshell/xml/config.js b/windows/src/desktop/kmshell/xml/config.js index dd25441933..a290e7b0b0 100644 --- a/windows/src/desktop/kmshell/xml/config.js +++ b/windows/src/desktop/kmshell/xml/config.js @@ -76,18 +76,21 @@ document.addEventListener("DOMContentLoaded", windowResize); } break; case 35: // end - var elem = event.srcElement.parentElement; - var j = elem.children.length - 1; - elem.children[j].focus(); + let elem = event.srcElement.parentElement; + for(let i = elem.children.length - 1; i >= 0; i--) { + if(elem.children[i].tabIndex != undefined && elem.children[i].tabIndex >= 0) { + elem.children[i].focus(); + break; + } + } break; case 36: // home var elem = event.srcElement.parentElement; for( var i = 0; i < elem.children.length; i++ ) { - if( elem.children[i].tabIndex ) { + if( elem.children[i].tabIndex != undefined && elem.children[i].tabIndex >= 0 ) { elem.children[i].focus(); break; } - } break; case 38: // up @@ -105,7 +108,7 @@ document.addEventListener("DOMContentLoaded", windowResize); j = i; do { if(--j < 0) j = elem.children.length-1; - if(elem.children[j].tabIndex) + if(elem.children[j].tabIndex != undefined && elem.children[j].tabIndex >= 0) { elem.children[j].focus(); list_expanded_selected(elem.children[j]); @@ -131,7 +134,7 @@ document.addEventListener("DOMContentLoaded", windowResize); j = i; do { if(++j >= elem.children.length) j = 0; - if(elem.children[j].tabIndex) + if(elem.children[j].tabIndex != undefined && elem.children[j].tabIndex >= 0) { elem.children[j].focus(); list_expanded_selected(elem.children[j]); diff --git a/windows/src/desktop/kmshell/xml/keyman_options.xsl b/windows/src/desktop/kmshell/xml/keyman_options.xsl index bce8b5651e..88a4b063a2 100644 --- a/windows/src/desktop/kmshell/xml/keyman_options.xsl +++ b/windows/src/desktop/kmshell/xml/keyman_options.xsl @@ -12,7 +12,7 @@
-
+
@@ -22,7 +22,7 @@ - +
@@ -97,5 +97,5 @@
- + \ No newline at end of file