diff options
| author | Stephen Blott | 2015-01-23 17:19:19 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2015-01-24 06:48:00 +0000 | 
| commit | 0f96b6bf07c02704272a90a017ee14661dca8ce0 (patch) | |
| tree | 256c156ddd617a1a207100abaafe77942fae7f6c /content_scripts/scroller.coffee | |
| parent | e1b7b0a963490b0991d72a0143f489e0bc1e8096 (diff) | |
| download | vimium-0f96b6bf07c02704272a90a017ee14661dca8ce0.tar.bz2 | |
Visual/edit modes: miscellaneous improvements.
Diffstat (limited to 'content_scripts/scroller.coffee')
| -rw-r--r-- | content_scripts/scroller.coffee | 34 | 
1 files changed, 23 insertions, 11 deletions
| diff --git a/content_scripts/scroller.coffee b/content_scripts/scroller.coffee index 43fad87e..f84dce8e 100644 --- a/content_scripts/scroller.coffee +++ b/content_scripts/scroller.coffee @@ -246,26 +246,38 @@ Scroller =      amount = getDimension(element,direction,pos) - element[scrollProperties[direction].axisName]      CoreScroller.scroll element, direction, amount +  # FIXME(smblott). Implement scroll in the "x" dimension.    scrollIntoView: (element) ->      activatedElement ||= document.body and firstScrollableElement()      rect = element.getBoundingClientRect() +    direction = "y"      if rect.top < 0 -      CoreScroller.scroll activatedElement, "y", rect.top - 50, false +      amount = rect.top - 10 +      element = findScrollableElement element, direction, amount, 1 +      CoreScroller.scroll element, direction, amount, false      else if window.innerHeight < rect.bottom -      CoreScroller.scroll activatedElement, "y", 50 + rect.bottom - window.innerHeight, false +      amount = rect.bottom - window.innerHeight + 10 +      element = findScrollableElement element, direction, amount, 1 +      CoreScroller.scroll element, direction, amount, false    scrollToPosition: (element, top, left) -> -    padding = 20 -    bottom = top + padding -    right = left + padding +    activatedElement ||= document.body and firstScrollableElement() + +    # Scroll down, "y". +    amount = top + 20 - (element.clientHeight + element.scrollTop) +    CoreScroller.scroll element, "y", amount, false if 0 < amount + +    # Scroll up, "y". +    amount = top - (element.scrollTop) - 5 +    CoreScroller.scroll element, "y", amount, false if amount < 0 -    element.scrollTop = top if top <= element.scrollTop -    element.scrollLeft = left if left <= element.scrollLeft +    # Scroll down, "x". +    amount = left + 20 - (element.clientWidth + element.scrollLeft) +    CoreScroller.scroll element, "x", amount, false if 0 < amount -    if element.scrollTop + element.clientHeight <= bottom -      element.scrollTop = bottom - element.clientHeight -    if element.scrollLeft + element.clientWidth <= right -      element.scrollLeft = right - element.clientWidth +    # Scroll up, "x". +    amount = left - (element.scrollLeft) - 5 +    CoreScroller.scroll element, "x", amount, false if amount < 0  root = exports ? window  root.Scroller = Scroller | 
