Merge branch 'scroll_page_navigate' of https://github.com/Carpetsmoker/qutebrowser into Carpetsmoker-scroll_page_navigate

This commit is contained in:
Florian Bruhin 2015-05-31 14:59:22 +02:00
commit 5b3ffa2419

View File

@ -643,14 +643,32 @@ class CommandDispatcher:
@cmdutils.register(instance='command-dispatcher', hide=True,
scope='window', count='count')
def scroll_page(self, x: {'type': float}, y: {'type': float}, count=1):
def scroll_page(self, x: {'type': float}, y: {'type': float}, *,
top_navigate: {'type': ('prev', 'decrement')}=None,
bottom_navigate: {'type': ('next', 'increment')}=None,
count=1):
"""Scroll the frame page-wise.
Args:
x: How many pages to scroll to the right.
y: How many pages to scroll down.
bottom_navigate: :navigate to the next page on bottom
top_navigate: :navigate to the previous page on top
count: multiplier
"""
frame = self._current_widget().page().currentFrame()
if not frame.url().isValid(): # Issue 701
return
if (bottom_navigate is not None and
frame.scrollPosition().y() >=
frame.scrollBarMaximum(Qt.Vertical)):
self.navigate(bottom_navigate)
return
elif top_navigate is not None and frame.scrollPosition().y() == 0:
self.navigate(top_navigate)
return
mult_x = count * x
mult_y = count * y
if mult_y.is_integer():
@ -663,7 +681,6 @@ class CommandDispatcher:
mult_y = 0
if mult_x == 0 and mult_y == 0:
return
frame = self._current_widget().page().currentFrame()
size = frame.geometry()
dx = mult_x * size.width()
dy = mult_y * size.height()