From bb2b37a73a58c5d41cefcd59ca214d5ccab7725c Mon Sep 17 00:00:00 2001 From: Abe Jellinek Date: Fri, 5 Aug 2022 16:31:09 -0400 Subject: [PATCH] Item box: Prevent tabbing to hidden fields This one's probably been around for a while! Reproduce by creating an item with a fieldMode = 1 creator, tabbing past the creator, and then shift-tabbing back to it. Your cursor will end up in the invisible first name field and further shift-tabs can't move it past. Cherry-picked from fx102: 080ada78eea782176e5e9e4f10b17be9d1f4ea08 --- chrome/content/zotero/bindings/itembox.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/chrome/content/zotero/bindings/itembox.xml b/chrome/content/zotero/bindings/itembox.xml index 071226fc4d..3054e3219c 100644 --- a/chrome/content/zotero/bindings/itembox.xml +++ b/chrome/content/zotero/bindings/itembox.xml @@ -2323,7 +2323,9 @@ if (back) { Zotero.debug('Looking for previous tabindex before ' + tabindex, 4); for (let i = tabbableFields.length - 1; i >= 0; i--) { - if (parseInt(tabbableFields[i].getAttribute('ztabindex')) < tabindex) { + let field = tabbableFields[i]; + let tabIndexHere = parseInt(field.getAttribute('ztabindex')); + if (tabIndexHere !== -1 && tabIndexHere < tabindex) { next = tabbableFields[i]; break; } @@ -2332,7 +2334,9 @@ else { Zotero.debug('Looking for tabindex ' + tabindex, 4); for (var pos = 0; pos < tabbableFields.length; pos++) { - if (parseInt(tabbableFields[pos].getAttribute('ztabindex')) >= tabindex) { + let field = tabbableFields[pos]; + let tabIndexHere = parseInt(field.getAttribute('ztabindex')); + if (tabIndexHere !== -1 && tabIndexHere >= tabindex) { next = tabbableFields[pos]; break; }