aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/scroller.coffee
diff options
context:
space:
mode:
authorStephen Blott2015-01-23 17:19:19 +0000
committerStephen Blott2015-01-24 06:48:00 +0000
commit0f96b6bf07c02704272a90a017ee14661dca8ce0 (patch)
tree256c156ddd617a1a207100abaafe77942fae7f6c /content_scripts/scroller.coffee
parente1b7b0a963490b0991d72a0143f489e0bc1e8096 (diff)
downloadvimium-0f96b6bf07c02704272a90a017ee14661dca8ce0.tar.bz2
Visual/edit modes: miscellaneous improvements.
Diffstat (limited to 'content_scripts/scroller.coffee')
-rw-r--r--content_scripts/scroller.coffee34
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