fix(windows): arrow keys need to select next/prev item in options tab

Fixes #7750.
This commit is contained in:
Marc Durdin 2022-11-18 10:28:25 +11:00
parent 7c3e7c0d07
commit 446089a8d3
2 changed files with 13 additions and 10 deletions

View file

@ -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]);

View file

@ -12,7 +12,7 @@
<div id="options" class="options_list">
<xsl:for-each select="//OptionGroups/OptionGroup">
<xsl:sort select="sort" />
<div class="options_list_header"><xsl:value-of select="$locale/string[@name=current()/name]"/></div>
<div class="options_list_header" tabindex="-1"><xsl:value-of select="$locale/string[@name=current()/name]"/></div>
<xsl:for-each select="//KeymanOption[group=current()/name]">
<xsl:if test="optiontype = 1 and id != 'koAutoSwitchOSKPages'">
<xsl:call-template name="option" />
@ -22,7 +22,7 @@
<div class="options_list_footer"></div>
</xsl:if>
</xsl:for-each>
<div class="options_list_footer"></div>
<div class="options_list_footer" tabindex="-1"></div>
<div id='options_control'>
<xsl:call-template name="button">
@ -97,5 +97,5 @@
</div>
</div>
</xsl:template>
</xsl:stylesheet>