diff options
| -rw-r--r-- | content_scripts/mode_normal.coffee | 18 | 
1 files changed, 17 insertions, 1 deletions
| 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) | 
