From 305a9275de0bd2f8e3578467a2fa33ba82747959 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 12 Nov 2017 15:08:52 +0000 Subject: Make focusInput visit inputs according to tabIndex order --- content_scripts/mode_normal.coffee | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'content_scripts') diff --git a/content_scripts/mode_normal.coffee b/content_scripts/mode_normal.coffee index ee05f4b0..788042f0 100644 --- a/content_scripts/mode_normal.coffee +++ b/content_scripts/mode_normal.coffee @@ -144,7 +144,23 @@ NormalModeCommands = for i in [0...resultSet.snapshotLength] by 1 element = resultSet.snapshotItem i continue unless DomUtils.getVisibleClientRect element, true - { element, rect: Rect.copy element.getBoundingClientRect() } + { element, index: i, rect: Rect.copy element.getBoundingClientRect() } + + visibleInputs.sort ({element: element1, index: i1}, {element: element2, index: i2}) -> + # Put elements with a lower positive tabIndex first, keeping elements in DOM order. + if element1.tabIndex > 0 + if element2.tabIndex > 0 + tabDifference = element1.tabIndex - element2.tabIndex + if tabDifference != 0 + tabDifference + else + i1 - i2 + else + -1 + else if element2.tabIndex > 0 + 1 + else + i1 - i2 if visibleInputs.length == 0 HUD.showForDuration("There are no inputs to focus.", 1000) -- cgit v1.2.3 From 771f05845a7ce97bdff95cfb7b58cd2af8ddcae6 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 12 Nov 2017 15:13:24 +0000 Subject: Use tabIndex to provide the special focusInput behaviour in the options --- content_scripts/mode_normal.coffee | 1 - 1 file changed, 1 deletion(-) (limited to 'content_scripts') diff --git a/content_scripts/mode_normal.coffee b/content_scripts/mode_normal.coffee index 788042f0..027ad22f 100644 --- a/content_scripts/mode_normal.coffee +++ b/content_scripts/mode_normal.coffee @@ -169,7 +169,6 @@ NormalModeCommands = # This is a hack to improve usability on the Vimium options page. We prime the recently-focused input # to be the key-mappings input. Arguably, this is the input that the user is most likely to use. recentlyFocusedElement = lastFocusedInput() - recentlyFocusedElement ?= document.getElementById "keyMappings" if window.isVimiumOptionsPage selectedInputIndex = if count == 1 -- cgit v1.2.3